考える場所が、すぐそこに用意されているということ

デイリーページを毎日作成し、そこにタスクをかき並べて実行していくことでタスクを管理・実行しています。
主にObsidianを使っており、このObsidianには「バックリンク」なる機能が存在します。何かというと、今開いているページに言及しているページを一覧で表示してくれるもの。

これがあれば、プロジェクトに関するログの一覧が、わざわざプロジェクト用のページに書き込まなくても確認できるようになります。
ちなみにここでいう「プロジェクト」とは、完了までに何日かかかるやることのことを指していると思ってください。

ログに関しては、とりあえずそのプロジェクトのリンクを記述し(Obsidianでは「[[]]」で囲んだ部分がリンクとなります)、そこに何をしたか、などのメモを書いておけば後からログを振り返ることができます。
となると、プロジェクトのために作成したページにはログを書かないことになるので、プロジェクトページの中身はすっからかんなまま。
それがなんだかいやで、わざわざログをプロジェクトページに転記したりしていたのですが(もちろんそのように使うのもいいのですが)、こうやって書くスペースが確保されていることが尊いのだと感じます。

プロジェクトを進めていて、ある程度作業を進めているときに、「どうしよう?」と悩むことがありました。どうデータを整理していくべきかわからず、「このままなんとなくで作業を進めると後々一からやり直しになりそう」という時が。
一方で、「どうしよう?」と悩み始めてからとった動きはとてもスムーズで。
そのプロジェクトページを開き、例によって中身はすっからかんなその場所に、データから何を抽出したいのか、そのためにはいくつかのデータをどう整理して組み合わせれば目的に叶うものになりそうかを書き出していきました。
一通り書き、見通しが立った後、あぁ、このためにプロジェクトページは存在するのか、と腑に落ちました。
プロジェクトページがあれば、常に「考える場所」がそこにあるのか、と。
「どうしよう?」と悩んでからページをひらけば考える場所があり、今悩んでいることを整理し始めることができる。この環境が尊いものだ、と感じたんです。

そしてこれは、たすくまではなく、1Writerを使うようになったこととも関係しています。

Taskuma —TaskChute for iPhone
カテゴリ: 仕事効率化, ライフスタイル

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

メモを書く場合、またそれを確認する場合は、たすくまでメモするよりもテキストエディタに書いていった方が自分の好みにあっているという理由もありますが、何よりもエディタなら「考えながら書く」ことができるってのが何物にも変え難い。
たすくま上では「考えながら書く」ということがなんだかできなくて。
また、たすくまでメモしたものは、書き込んだタスクをタップしてタスクの詳細画面にいかないと目に入りません。ログをエクスポートすればEvernote上で確認できるようになりますが、たすくま上では常にメモしたものは隠れたまま。
一方で、エディタ上に1日のタスクをたすくま並みに詳細に書き連ね、そこにメモも直接書き込んでいく1Writerであれば、1Writerをひらけばメモも一緒に目に入ります。書いたメモが勝手に目に入ってくれる。
着想メモは、放り込むだけより、書き込むときに過去のものが目に入ったほうがいいと考えているので、それにはたすくまではなく1Writerだなぁ、と。
それには、たすくまの便利さをかなりの部分手放す必要があったわけですが、今のところなんとかなっています。


考える場所が、すぐそこに用意されていること。
そういう環境が今実現されているので、今までになくいい感じにプロジェクトについて考え、タスクを進め、メモを書き残せている気がします。

では、お読みいただきありがとうございました。

ファイルからリストを作成して、リピートタスクを呼び出す〜1Writerカスタマイズ④〜

「1Writerカスタマイズ」の①〜③にて書いたアクションを作成した段階で、たすくまを使うのをやめ、1Writer(Obsidian)に完全移行しました。

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

Taskuma —TaskChute for iPhone
カテゴリ: 仕事効率化, ライフスタイル

デイリーのテンプレートと、行ごとの削除と移動があれば、一つ一つの行動を記録しながら過ごすことは、けっこう簡単になります。
あとは、予定になかった、つまり、デイリーページ上に書き込まれていないリピートタスクを呼び出すことができれば、終了予定の算出だけがないタスクシュートと呼べるようになるでしょう。
ということで、「リピートタスクの呼び出しできるようにならないか」と考えました。

1Writerのjavascriptアクションの数々には例が載っています。試しに「ui.list()」の例を実行してみると、項目がリスト表示され、そのリストから好きなものをタップすると、そのリストの内容が文中に挿入されるものでした。
これは、使えそうです。
そのコードを書き換え、

  • リピートタスクの一覧が記述されたファイルを開く
  • それをリスト形式に表示する
  • 選択された項目をクリップボードにコピーする

というものにしました。

リピートタスクの呼び出し

//アクションを実行したあと、元のファイルに戻るため、今編集中ファイルのフォルダとファイル名を取得
var folder = editor.getFolderPath();
var editingfile = editor.getFileName();

//リピートタスクを記述しているファイルのファイル名
var openfilename = 'ここに一覧を取得したいファイル名を記述.md'

//リピートタスクの一覧が記述されているファイルを開く。フォルダは、そのファイルが保存されているものを指定してください。
editor.openFile('Dropbox/'+openfilename,'edit',call);

function call(){
    //開いたファイルに記述されているテキストを取得
    var text = editor.getText();
    //改行ごとに配列に格納
    const listData = text.split('\n');
    ui.hudDismiss();
    //配列をリストに
    ui.list('Repeat', listData, false, selectedValues => {
        if (!selectedValues) {
            return;
        }
        const text = selectedValues.join('\n');
        if (editor.isClosed()) {
            editor.newFile(text);
        }else {
            //選択した項目をクリップボードにコピー
            app.setClipboard('\n' + text);
            //はじめに編集中だったファイルを開く
            editor.openFile(folder + '/' + editingfile);
        }
    });
}

アクションを起動した時の動き

アクションを起動するとリストが表示され、そのうち一つを選択すると選択した項目のがクリップボードにコピーされ、元のファイルに戻ってくるので、好きな場所に貼り付けることができます。
リストは、複数選択を可能にもできるので、その場合は
ui.list('Repeat', listData, false, selectedValues
のfalseの部分をtrueに書き換えてください。

まずは、リスト表示したいファイルを作成して、そのファイル名をコード内の「ここに一覧を取得したいファイル名を記述」の部分に書くことでアクションが使えるようになします。
改行を目じるしに、1行1項目でリストに表示するので、リスト表示したいファイルは、そのことを念頭に置いた上で作成していただければと思います。


これまで4回にわたり1Writerの自作アクションについて書いてきました。これにて、「やったことの記録がすこぶる取りやすいリストアプリ」のように、テキストを扱えるようになり、日々、デイリーリストを作成し、1WriterとObsidianで同一のファイルを扱いながら、やったことの記録をとりつつ過ごしています。
まずまず気に入っているので、しばらくはこのまま使い続けようかな、と思います。

では、お読みいただきありがとうございました。

別ファイルに記述されたデイリーテンプレートを呼び出す〜1Writerカスタマイズ③〜

テキストを1行ごとに削除したり移動したりできるようにすることで、「1行ごとのリスト」として扱えるようにしたのが前回までの話。

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

これでかなり便利になり、1行単位での操作ができるようになったので、箇条書きやチェックリストがすごく扱いやすくなりました。
こうなると本格的に「テキストエディタでタスク管理」がしたくなってきます。
しかもぼくは普段から「たすくま」を利用しているので、テキストエディタである1Writerでも、たすくまのように「すべての行動を記録してはいけないものか」、と考えました。

Taskuma —TaskChute for iPhone
カテゴリ: 仕事効率化, ライフスタイル

となると不可欠になってくるのが、リピートタスクを呼び出すこと。
毎日やっていることに関しては、リピートタスクとして登録しておき、日々それを呼び出してタスクリストを作ることで、たすくまのような「やったことの記録がすこぶる取りやすい」テキストエディタが実現します。

1Writerには、「指定したファイルを開く」アクションがあり、それを使うことでテンプレートを呼び出すアクションを作ることができます。
アクションを起動すると、

  • あらかじめ作成したテンプレートファイルを開く
  • 内容をコピーする
  • 元のファイルに戻ってくる

ところまでやってくれるので、あとは任意の場所にペーストするだけ。
準備は、テンプレート用のファイルを作成しておくことと、以下のコードの「ここにテンプレートファイル名を記述」の場所を自分で書き換えること。

テンプレートファイルを開き、コピーし、戻るアクション

d=new Date();
today=d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate());
yesterday = d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate()-1);
tomorrow = d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate()+1);
oneyearsago = (d.getFullYear()-1)+zero(d.getMonth()+1)+zero(d.getDate());
twoyearsago = (d.getFullYear()-2)+zero(d.getMonth()+1)+zero(d.getDate());
threeyearsago = (d.getFullYear()-3)+zero(d.getMonth()+1)+zero(d.getDate());
var dayOfWeek = d.getDay(); // 曜日(数値)
var weekday = [ "(Sun)", "(Mon)", "(Tue)", "(Wed)", "(Thu)", "(Fri)", "(Sat)" ][dayOfWeek]; // 曜日(日本語表記)

var folder = editor.getFolderPath();
var editingfile = editor.getFileName();

var openfilename = "ここにテンプレートファイル名を記述.md";

editor.openFile('Dropbox/Days/'+openfilename,'edit',call); //ファイル名の前には、フォルダを指定。ここでは、「Dropbox」フォルダ内の、「Days」フォルダを指定している。

function call(){
    var text = editor.getText();
    var text = text.replace(/{{today}}/g,today).replace(/{{tomorrow}}/g,tomorrow).replace(/{{yesterday}}/g,yesterday).replace(/{{oneyearsago}}/g,oneyearsago).replace(/{{twoyearsago}}/g,twoyearsago).replace(/{{threeyearsago}}/g,threeyearsago).replace(/{{weekday}}/g,weekday);
    app.setClipboard(text);
    editor.openFile(folder + '/' + editingfile);
}

function zero(s){return ("0"+s).substr(-2)}

コード内に、{{today}}や{{yesterday}}という記述があることにお気づきでしょうか。
これは、テンプレートのテキスト内の{{today}}と書かれている部分を、今日の日付に変換するための記述です。

このように書かれている場合、アクションを起動してテンプレートの内容を取得し、ペーストすると

こうなります(スクショは4月15日に撮影)。

{{oneyearsago}}や{{twoyearsago}}は、1年前、2年前の同じ月日。Obsidianにて連用手帳を実践していて、その際1年前や2年前のページを見返したいので、テンプレートに組み込んでいます。

テンプレートは1つのmdファイルなので、編集が簡単。
ただ、たすくまのような複雑なリピート設定はできないので、そこは今後工夫する必要がありそうです。


これで、日々のリピートは簡単に呼び出し可能になり、かなり詳細な記録を取ることができるようになりました。
こうなってくると、1日の計画を立てるときには書いていなかったタスクも、リピートに登録されているのであれば、リピート一覧から選択し、挿入できるようにしたくなってきます。
1Writerには、配列のデータから「リスト」を作成するアクションもありまして。次はそのあたりについて書いていきます。

カット・ペーストを可能にして、ダイナミックな移動を可能に〜1Writerカスタマイズ②〜

Obsidianが日々の相棒となってくれており、iPhoneでは「1Writer」というアプリを使ってObsidianで扱っているファイルと同じファイルを編集できるようにしています。

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

そして、リストアプリのようにテキストを扱えるようにするにはなにが必要かを考え、

  • 行ごとの削除
  • 行ごとの移動

の2つが欠かせないということで、

にて、削除と上下の移動は可能にすることができました。が、もっとダイナミックに移動させたいという願望が出てきました。


リストアプリでは、長押しや「編集」ボタンを押すことで、項目のドラッグ&ドロップが可能になるものが多いと思います。で、これが結構大事でして。
タスクを、実行しようと思っている順に並べているのですが、実際はそれ通りにいくことはあんまりありません。時にはリストの項目を大きく移動させたい時が出てきます。そんな時に重宝するのがドラッグ&ドロップの機能なわけです。
でもこれをテキストエディタに求めるのは、つまり1行ごとにドラッグ&ドロップによる移動ができるようにするのは、なかなかに難しい。
でもやっぱり、大きく移動させる機能は欲しい。

ということで、「カット」と「ペースト」を気軽にできるようにすることで、ドラッグ&ドロップのような動きを可能にしよう、と考えました。

  • カーソル(選択)行をカット
  • クリップボードの内容をペースト

という2つの機能があれば、リストの項目を大きく動かしたい時は、動かしたい項目をカットして動かしてきたかった場所でペーストすることができるので、ドラッグ&ドロップ機能の代わりができるだろう、と。
実際に動きを見てみましょう。

移動させたい行にカーソルを持っていく。あるいは、複数行に渡る場合は範囲選択をしておき、カット。するとその行がカットされる。移動したい先にカーソルを持っていって、ペーストボタンを押せばそこに移動完了です。
この機能で、さらにテキストエディタの内容を1行ごとに操作することが、以前よりやりやすくなりました。

カーソル(選択)行をカット

var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];
var selects;
var selecte;
var linecount = 0;
var selectrange;
for (let i = 0; i < linetexts.length; i++){
    if ( s <
        linecount + linetexts[i].length +1){
        selects = i;
        selectrange = linecount - 1;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}
linecount = 0;
for (let i = 0; i < linetexts.length; i++){
if ( e <
    linecount + linetexts[i].length +1){
        selecte = i;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}

var before = -1;
for(let i=0; i < selects;i++){
    before = before + linetexts[i].length + 1;
}
var after = before;
if(before < 0){
    before = 0;
}
for(let i=selects; i < selecte+1;i++){
    after = after + linetexts[i].length + 1;
}
editor.replaceTextInRange(before, after, "")
var cutlines = [];
for(let i = 0; i < selecte-selects+1; i++){
    cutlines.push(linetexts[selects + i])
}
var cuttext = cutlines.join('\n');
app.setClipboard('\n' + cuttext);

クリップボードの内容をペースト

“`
var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];

var cuttext = app.getClipboard();

editor.replaceTextInRange(s,e,cuttext);
“`

テキストエディタ上のテキストを1行ごとに扱うことができるようになることが、iPhone上ではこんなに快適になるものなんだな、と驚いています。
ついでに、カーソル行をコピーするアクションも作りました。

カーソル(選択)行をコピー

var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];
var selects;
var selecte;
var linecount = 0;
var selectrange;
for (let i = 0; i < linetexts.length; i++){
if ( s <
linecount + linetexts[i].length +1){
selects = i;
selectrange = linecount - 1;
break;
}else{
linecount += linetexts[i].length + 1;
}
}
linecount = 0;
for (let i = 0; i < linetexts.length; i++){
if ( e <
linecount + linetexts[i].length +1){
selecte = i;
break;
}else{
linecount += linetexts[i].length + 1;
}
}
var cutlines = [];
for(let i = 0; i < selecte-selects+1; i++){
cutlines.push(linetexts[selects + i])
}
var cuttext = cutlines.join('\n');
app.setClipboard('\n' + cuttext);

  • カーソル(選択)行を削除
  • カーソル(選択)行を上へ移動
  • カーソル(選択)行を下へ移動
  • カーソル(選択)行をカット
  • カーソル(選択)行をコピー
  • クリップボードの内容をペースト

以上のアクションをカスタムキーボードに設定し、毎日使っています。

とても快適になったわけですが、1Writerで、たすくまのように「全ての行動を記録する」となると、行ごとの操作に加え、リピートタスクを設定し、それを簡単に呼び出せる仕組みが必要になってきます。全ての行動を記録する際、毎日やっていることに関しては、。毎日入力するよりもテンプレートで引っ張って来る方が明らかに手間が省けます。ましてや、たすくまのタスク数は大体40程度。それらを毎日入力するのは現実的ではありません。

そこで、1Writerにも、テンプレートを引っ張ってきてエディタ部分に入力し、たくさんのタスク名をいちいち入力しなくて住むようになりました。が、これはまた別の機会に。

テキストを「1行ごとのリスト」ととらえ、削除と移動を可能に〜1Writerカスタマイズ①〜

タスク管理アプリの多くは、長年使っている「たすくま」もそうですが「リスト」の形式をとっています。

1タスク1リスト(1タスク1行)の表示で、タスクがダァーッと並んでいる形式。
確かにこの形式は、タスク管理をする上で扱いやすいなぁと感じます。
リスト形式であれば、

  • 行の削除ができる
  • 行の順番の入れ替えができる

という機能を備えており、それがタスクを扱いやすくしてくれている要因ではないか、ということで、「やったことの記録がすこぶる取りやすいリストアプリ」のように、テキストを扱えるようにしたいな、という思いがわいたわけでした。
「アウトライナー」をタスク管理に利用している方も多くいられると思うのですが、それは、アウトライナーは行の削除と順番の入れ替えが容易であるというのも大いに関係していると感じます。

ぼくは、タスク管理に今はObsidianを使っているのですが、iPhoneでは、「1Writer」というアプリを使っています。

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

1Writerはjavascriptを扱えますので、テキストを加工することができます。そこで、1Writerのjavascript機能を使って、

  • 行の削除ができる
  • 行の順番の入れ替えができる

という機能を実装しようと考えました。
そうして作成したのが、以下の3つのアクション。

  • カーソル(選択)行を削除
  • カーソル(選択)行を上へ移動
  • カーソル(選択)行を下へ移動

カーソル(選択)行を削除

var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];
var selects;
var selecte;
var linecount = 0;
var selectrange;
for (let i = 0; i < linetexts.length; i++){
    if ( s <
        linecount + linetexts[i].length +1){
        selects = i;
        selectrange = linecount - 1;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}
linecount = 0;
for (let i = 0; i < linetexts.length; i++){
    if ( e <
        linecount + linetexts[i].length +1){
        selecte = i;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}

var before = -1;
for(let i=0; i < selects;i++){
    before = before + linetexts[i].length + 1;
}
var after = before;
if(before < 0){
    before = 0;
}
for(let i=selects; i < selecte+1;i++){
    after = after + linetexts[i].length + 1;
}
editor.replaceTextInRange(before, after, "")

カーソル(選択)行を上へ移動

var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];
var selects;
var selecte;
var linecount = 0;
var selectrange;
for (let i = 0; i < linetexts.length; i++){
    if ( s <
        linecount + linetexts[i].length +1){
        selects = i;
        selectrange = linecount - 1;
    break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}
linecount = 0;
for (let i = 0; i < linetexts.length; i++){
    if ( e <
        linecount + linetexts[i].length +1){
        selecte = i;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}

var before = 0;
for(let i=0; i < selects;i++){
    before = before + linetexts[i].length + 1;
}
var after = before;
if(before < 0){
    before = 0;
}
for(let i=selects; i < selecte+1;i++){
    after = after + linetexts[i].length + 1;
}
editor.replaceTextInRange(before, after, "")
var cutlines = [];
for(let i = 0; i < selecte-selects+1; i++){
    cutlines.push(linetexts[selects + i])
}
var cuttext = cutlines.join('\n');

if ( selects == 0 ){
    editor.replaceTextInRange(0, 0, cuttext + '\n');
    editor.setSelectedRange(cuttext.length,cuttext.length);
}else if( selects == 1 ){
    editor.replaceTextInRange(0, 0, cuttext + '\n');
    editor.setSelectedRange(s - linetexts[0].length-1,e-linetexts[0].length-1);
}else{
    var before = 0;
    for(let i=0; i < selects-1;i++){
        before = before + linetexts[i].length + 1;
    }
    editor.replaceTextInRange(before-1, before-1, '\n'+cuttext)
    editor.setSelectedRange(s - linetexts[selects-1].length-1,e-linetexts[selects-1].length-1);
}

カーソル(選択)行を下へ移動

var text = editor.getText();
var linetexts = text.split('\n');
const range = editor.getSelectedRange();
var s = range[0];
var e = range[1];
var selects;
var selecte;
var linecount = 0;
var selectrange;
for (let i = 0; i < linetexts.length; i++){
    if ( s <
        linecount + linetexts[i].length +1){
        selects = i;
        selectrange = linecount - 1;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}
linecount = 0;
for (let i = 0; i < linetexts.length; i++){
    if ( e <
        linecount + linetexts[i].length +1){
        selecte = i;
        break;
    }else{
        linecount += linetexts[i].length + 1;
    }
}

var before = 0;
for(let i=0; i < selects;i++){
    before = before + linetexts[i].length + 1;
}

if ( selecte == linetexts.length-1 ){

}else{

    var after = before;
    if(before < 0){
        before = 0;
    }
    for(let i=selects; i < selecte+1;i++){
        after = after + linetexts[i].length + 1;
    }
    editor.replaceTextInRange(before, after, "")
    var cutlines = [];
    for(let i = 0; i < selecte-selects+1; i++){
        cutlines.push(linetexts[selects + i])
    }
    var cuttext = cutlines.join('\n');
    var before = 0;
    for(let i=0; i < selecte+1;i++){
        before = before + linetexts[i].length + 1;
    }
    editor.replaceTextInRange(before-1+linetexts[selecte+1].length-cuttext.length, before-1+linetexts[selecte+1].length-cuttext.length, '\n'+cuttext);
    editor.setSelectedRange(s + linetexts[selecte+1].length+1,e+linetexts[selecte+1].length+1);
}

おそらくあんまりキレイなコードではないと思うのですが、、、便利なのでよかったら使ってみてください。

で、これらによって、テキストを行ごとに削除したり移動したりが簡単になったわけです。でも、だいぶと便利になったのに、さらに欲が出てきまして。
もっとダイナミックに移動させたいようになってきました。

つづく

「やったことの記録がすこぶる取りやすいリストアプリ」のように、テキストを扱えるように

かれこれ10年近く、タスクシュートを実践しています。

  • 「これからやる仕事のリスト」と「ここまでやった仕事のリスト」を一元管理する
  • 「1分以上かかること」はすべて管理する
  • すべての仕事の「見積もり時間」を出しておく
  • 「本日1日分の仕事」がすべて終わったら何時になるのかの予測を自動算出することで、常に仕事の終わる時間(または就寝時間)をリアルタイムに把握する

『なぜ、仕事が予定どおりに終わらないのか?~「時間ない病」の特効薬!タスクシュート時間術』(佐々木 正悟(著)大橋 悦夫(監修))

最近はそこまでこだわることなく、日々のルーチンはたすくま(タスクシュートをiPhoneで実践できるアプリ)に全て登録しておき、朝の仕事場に出発するまでの時間と、帰ってきてから寝るまでの時間をたすくまに帆走してもらいながら過ごしています。
やったことを記録しつつ、起きてから寝るまで過ごす。見積もり時間や終了予定時刻もあいまいな感じで算出していますし、たすくま上に並んでいるタスクをまるっと消してしまうこともあったりします。
やったことは記録してはいますが、記録を見返すことはほとんどなくなりました。
ほぼ、日々のルーチンを確認し、やったことを記録するためだけにたすくまを使っている感じです。

そこで感じるようになったのは、「これは『たすくま』を使う必要はあるのか?」という疑問。
タスクシュートを実践するために作られたものなので、確かにタスクシュートは実践しやすい。たすくまは、タスクシュートを実践する上では間違いなく便利なんです。
ただ、仕事中はObsidianに書き出したタスクリストをもとに何をするか定めていっているので、たすくまを使っていませんし、Obsidianにて作成したデータはiPhoneでも確認・編集できるところが魅力的でして。
じゃあ、たすくまをずっと使い続けている理由、どこが便利なのか?を考えてみると、

  • やったことの記録がすこぶる取りやすいから
  • リストアプリだから

という結論に行きつきました。

  • やったことの記録がすこぶる取りやすいから
    • やったことの記録を取るためにはやったことを入力しなければいけないが、あらかじめ「やること」が記入されているので、やるときにいちいち入力しなくて済む
      • 記入されている「やること」の中から、今から取り掛かるものを選択するだけでいい
    • 完了のチェックができ、開始・終了を自動的に、もしくは素早く入力できる
  • リストアプリだから
    • 行の削除ができる
    • 行の順番の入れ替えができる

以上が使い続ける理由なわけで、これらが満たされていれば他のアプリを利用しても、それこそObsidianや1Writer上でも現状たすくまでやっているようなことが実現できるのではないか、と考えました。

仕事中はたすくまではなく、Obsidianのデイリーページ上にタスクを書き出し、順番を入れ替えたりしながら実行していってます。
それぞれのタスクに見積もりを設定してはいませんし、なので終了予定時刻も算出されません。
一つ、守っていることは、やったことは全て書き残していくことと、終了時刻を入れること。
それでも、仕事に支障をきたすことはなくなってきたので、見積もりや終了予定時刻にはこだわらず、とにかくやったことと時間を記録していくことに集中してみよう、と。

そこでまず着手したのが、1テキストをリストのように扱えるように、Writerをカスタマイズすること。
行の削除、行の移動、行のコピー・ペーストの実装です。
1Writerはjavascriptが使えるので、テキストを色々といじるアクションを作成することができ、なおかつそのアクションをカスタムキーボードに設定することができます。
なのでせっせとjavascriptを組み、上記機能を実装することができました。

残りの課題は、どうやってやったことの記録をすこぶる取りやすくするか。
テンプレートを使う前提になっていきそうですが、極力手間なく記録を取っていけるような環境を作ることができればな、と考えています。

長い付き合いのたすくまは一度休憩して、他のツールで模索してみようかな、という試みをはじめてみたいと思います。

では、お読みいただきありがとうございました。

ボトルネックは「別のページを開く」

ぼくは、手帳が好きだ。
毎年手帳の季節になると、店頭に並ぶ手帳を見てまわる。今は手帳として世に売られているものに関しては使っていないので、買うつもりはあまりないのに、どんな手帳があるのかな、と見てまわる。
以前は色々と手帳を試したりしていた。でも使ううちに、自分独自の手帳が欲しくなり、分厚いノートを購入して手帳として使うことが多くなった。で、今はほぼデジタルで管理している。Obsidianにて連用手帳を実践して。


手帳がすごい好きな割に、ちゃんと使えてない感がいっつもあった。
ノートを使うにしろ手帳を買うにしろ、基本はデイリーのものを利用していた。1日1ページ手帳。
1日1ページのようなデイリーの手帳であれ、必ずマンスリーページは存在する。ノートを手帳がわりに使う時も、必ずマンスリーページを作成していた。
でも、それをろくに使えない。
デイリーページはそれなりに書くことがあり、日々使う。けど、マンスリーがうまく使えない。

Obsidianに手帳の役割を持たせるようになり、なぜマンスリーページをうまく使えていなかったのかに、ようやく気づいた。

自由に好きなページを画面に並べることができるのは、Obsidianの大きな利点で、画面構成を自分の望むようなものにできる。
そこでぼくは、基本的に中央には今日の日付のデイリーページを表示し、サイドにマンスリーページを配置することにした。
それからというもの、タスクもスケジュールもいい感じにこなすことができている。デイリーページに加え、マンスリーページもうまく使うことができている。

マンスリーをうまく使えてなかった時と何が一番違うかというと、「常に表示されているか否か」という点。
紙の手帳では、基本的にデイリーページを使っているのであれば、マンスリーページはわざわざ自分から開きにいかなければならない。
別に難しいことでもなんでもない、マンスリーページを開くという動作。それがぼくにとっては大きなボトルネックとなっていた模様。
自分から見にいかないといけない、となると、見にいかない。なぜか見にいかない。どうしても見にいかない。
常に表示されていて、勝手に目に入るような、見にいく動作すら必要としない状態であると、マンスリーページを活用することができる。
何か書き込むのも気軽にできるし、今後の予定も視線を移すだけでさっと確認できる。見にいかなくても確認できる。わざわざ開かなくても書き込める。
このことが、自分にとってはかなり大きいことであるというのが、ようやくわかった。

デイリーとマンスリーを使っていると、転記が必要になる。
基本的にはデイリーを開いているので、何かあればデイリーページに書き込む。それがスケジュールであれば、マンスリーページの該当の日付の欄に転記する。
デイリーには書かず、直接マンスリーに書けばいい、と思うけれども、それもなかなかできなかった。
マンスリーを開いて、書き込むという動作が。
なので、自分でも不思議に思うくらい、マンスリーページをちゃんと使えた試しがない。
マンスリーページがデイリーページの横に表示されていると、スケジュールや日付の決まっているタスクは、直接マンスリーに書くことができる。
今までなかなかできていなかった、マンスリーに書き込むという動作が、いとも簡単にできる。
直接書き込めるので、転記も必要ない。

総じて、デイリーページとマンスリーページが常に開かれている、目に入る、書き込める状態は、ぼくにとって驚くほど快適で、自由に画面を並べることができるObsidianは、ぼくにとても合っているツールだと感じる。

では、お読みいただきありがとうございました。

仕事を進める上でなくてはならない道具7選

ぼくは、高校で教員をしています。
教師の仕事は、ただ教科を教えればいいってものではなく、他にも色々とやることが結構わんさかあります。
それらをこなしていこうと思うと、道具の力を借りなくては、にっちもさっちもいかなくなります。ぼくの場合。
仕事に就くちょっと前に「ライフハック」という言葉を知り、そこで色々と自分なりに調べては試し、タスク管理をし始めることができたことは、今思えば、自分にとってはかなりの財産になってくれているな、と感じます。

仕事に就いてはや10年。これまで仕事をなんとかこなしてこれたかな、と思っているのですが、その時々でタスク管理を試行錯誤し、それなりに自分にあった手法を見出してきました。
おそらくこれからもやり方や使う道具は変わっていくとは思いますが、今現在使っている、仕事を進める上でなくてはならない道具を紹介していこうと思います。

  • Mac
    • Obsidian
  • iPhone
    • 1writer
  • iPad
    • iPad+Apple Pencil
    • Noteshelf
    • Keynote
  • Hand Writing
    • JETSTREAM
    • pocket size memocho

Obsidian

まずは、Obsidianにて連用手帳をしているので、Obsidianは欠かせません。今はかなりお世話になっています。
仕事中は基本的にはデイリーページを開きっぱなしにし、そこに書き出されているタスクを一つ一つ消化しながら、何かあればメモをする、という日々を過ごしています。

1Writer

ObsidianはiPhoneでは使えないので、代わりに1Writerを使っています。
iPhoneではショートカットと 1Writerを用いて、Obsidianのデイリーページへ一発アクセスできるようにしてあり、デイリーページに何かしら書き込みたければ1Writerを使う、という使い方です。

iPad+Apple Pencil

iPad+Apple Pencilは、仕事では欠かせない存在となりました。

板書計画をたて、それをそのまま授業に使うことができる。
配置も自由に決めることができ、書き直しが容易であること。書いてから配置を変えることができるのは、考える際にとてもありがたい。

NoteShelf

今は書き心地と機能を考えて、NoteShelfを使っています。

書き心地がなかなかよく、機能も充実している。また、書いたものをコピーし、他のアプリに受け渡すことが簡単で、そういった細かい部分も気に入って使っています。

Keynote

iPadアプリでもう一つ欠かせないのが、Keynote。
授業をする際に、よく電子黒板を利用してあらかじめ用意してあった板書内容を生徒に提示するのですが、その際はKeynoteを使っています。
また、数学の問題の解説動画を作ったりするときには、Keynoteの手書きによる注釈と画面録画を利用しています。
なので、なかなかにお世話になっているアプリです。

JETSTREAM

文房具が好きで、特に紙質とペンの書き心地にはこだわるほうだと自分では思っています。
なので、ボールペンであればJETSTREAMの書き心地は欠かせない。
ストレスなく、ぬるぬると紙の上を線が滑っていってくれるあの感覚は、とても心地いいものです。

pocket size memocho

最後は、ポケットサイズのメモ帳。
基本的にはiPhoneを取り出してメモをするのですが、それがはばかられる時やiPhoneを持ち歩いていない時はメモ帳にメモし、後でObsidianに転記したりそのまま使い終われば破棄したり。
メモ帳とJETSTREAMのタッグは、今回の道具の中では一番の古参で、長いことお世話になっています。


思い返せば、メモ帳を常に持ち歩く、というのも、仕事に就くちょっと前からやり始めたことでした。
ライフハックというものを知り、学び、試してみたこと。
メモ帳を常に持ち歩き、メモをするという行為を自分のものにできたこと。
そして、同じ時期にiPhoneを使い始めたこと。
これらは間違いなく、ぼくに大きな転換をもたらしてくれました。
どれもが、10年経ってもいまだに活躍してくれているので、これからも大切にしていきたいと思います。

では、お読みいただきありがとうございました。

Obsidianにて連用手帳

職場のデスクでは、Obsidianを常に開いています。
Obsidian上でタスク管理をおこなっており、毎朝その日の日付をタイトルとした新たな1ページ作成することから1日が始まります。
そこに色々と、その日やることや、思いついたことや、新たに発生したタスクや、実行したことに関するログを書きつけていっています。
デイリーページと呼ぶことにしますが、このデイリーページの作成にはテンプレートを用いています。

去年あたりから「連用形式」で手帳やノートを使うことがいいと感じ、どのノートを使う際にも、連用形式で使うにはどうしようか?と自然と考えています。
「連用形式」とは、「連用日記の形式」のことで、同じ日付のページを数年にわたって使用する、というもの。
例えば、1月17日というページを作成し、今年はその日はそのページを使う。で、来年の1月17日にも、同じページを使う。
こうすることによって、去年書いたことが勝手に目に入る使い方です。

紙のノートを手帳のかわりに使い、それをやり始めました。それからというもの、手帳的な役割を担ってくれているものに関しては、すべて「連用形式」でいくのがいいのでは?と思っておりまして。
Obsidianを手帳的に使っているので、じゃあObsidianも連用形式にしよう、となるのは自然な流れです。
どうしようかあれこれ考え、試した結果、「埋め込み」の機能を使うことにしました。

Obsidianでは、ダブルブラケット「[[]]」でリンクの記述をしている部分の前に「!」をつけると、プレビューした時にリンク先のページをそのまま表示してくれる「埋め込み」機能があります。

これを利用すれば、各デイリーページに去年と一昨年の同じ日付のデイリーページへのリンクを貼り、「!」をつけておけば、プレビューした時のみ、過去の同じ日付のページが表示される、という形にすることができます。
基本的に、デイリーページにあれこれ書き込んでいる時は表示されず、プレビューすれば見える。いい感じです。
という様に、Obsidianにて連用形式でのデイリーページの運用が可能になりました。
しばらくはこれにて、Obsidianを「連用手帳」として使っていこうと思います。

では、お読みいただきありがとうございました。

自由に、好きなページを画面に並べることができるのはいいことだ

Obsidianを使い始めてから、かなりの部分をObsidianに任せるようになってきました。
Obsidianというのは、mdファイルを扱うテキストエディタです。
かなり気に入っており、なんでこんな「これえぇなぁ」と思うのか考えてみると、

  • 自由に、好きなページを画面に並べることができるのはいいことだ

ことが大きい、ということに気づきました。

Scrapboxで、ページ同士が気軽につながる威力を知り、Obsidianでも簡単にページ同士をリンクさせることができるので、まずそこが入りで使い始めました。
で、気に入ったのがそこだけなら、Scrapboxでも同じことできるやん、ってなるわけです。
でも、だいぶと使用感は違う。
どこの違いが一番大きいか、というと、ページを並べることができることだ、という結論に行き着いたわけです。

しかも、Obsidianでは、ただ単にページを並べられるだけではなく、サイドバーの中にページを置くことで、中央に表示するのとは違う働きをしてくれるようになります。
サイドバーに配置しているページの中のリンクを踏めば、メインの表示が、中央に表示しているページがそのリンク先のページに切り替わる。
一方で、メイン表示のページ上のリンクを踏めば、メイン表示がリンク先のページに切り替わります。
という風に、メイン表示のページとサイドバーに表示しているページとで、リンクを踏んだときの挙動が変わり、違う役割を持たせることができ、それがとても使いやすい。
自分の好きなものを中央やサイドバーに表示できるので、自分が使いやすいように画面の表示構成を調整できる。そこがObsidianのとても大きいな利点であると感じます。

で、Obsidianではさらに、メイン表示のページに連動してGraphやBacklinkが切り替わってくれます。小気味良く。
あ、ちなみに、「Graph」というのは、今開いているページとリンクでつながっているページたちを平面に配置して表示してくれる機能で、「Backlink」は、他のページ内で今開いているページにリンクを貼っている部分を表示してくれる機能のことです。

Image

これらの機能により、ページ同士のつながりを把握することができるというわけです。

Obsidianの特徴や優れたところは他にも色々とあると思うのですが、細かい部分でもかなり利用する際に決め手となりそうなのが、自由に、好きなページを画面に並べることができるところ。
今後も自分にあった状態を考えつつ、使っていこうと思います。

では、お読みいただきありがとうございました。