カット・ペーストを可能にして、ダイナミックな移動を可能に〜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);
}

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

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

つづく

タスクリストを使うにも、とりあえず書いていきやすいのが大事

最近は、Obsidianにてタスクリストを書き、実行していってる。
やったことを記録していってる。
Obsidianを使い出す前は、Dynalistを使っていた。
同じようにDynalist上にてデイリーページを作成して、そこに今日の予定やタスクを書き出し、実行していく。
書き出されていなかったことも、実行したことがあれば追記する。
できれば、タスクに関するメモもそこに書き込む。
タスク管理アプリを使うよりも、この方が自分には向いてるな、と感じるようになった。

もっと前は、iPhoneアプリ「たすくま」で今日のタスクを管理していた。
やってることは同じ。
1日のタスクを書き出し、実行していく。
書き出されていないものでやったことがあれば追記する。
1日の全ての時間をたすくまでログをとりつつ過ごしてた。
今もたすくまは使っており、主に仕事以外の時間の記録をとる役割を担ってくれてる。
もう長いこと、7,8年くらいはタスクシュートを実践して過ごしている。
DynalistやObsidianでやっていることも基本的には同じ。
仕事においては、たすくまよりも手に馴染む。

PCの前に座っている時間が長いというのが理由の一つとして挙げられる。
PCが前にあるため、キーボードによる文字入力ができ、書き込みやすい。
iPhoneを使い始めて10年ほどになるけど、手書きよりもキーボードよりも入力はしにくい。
入力しにくいから、入力しなくなりがち。
後、タスク管理アプリはアプリごとに新規タスク入力の際、たいがい画面上のどこかにある「+」ボタンを押して新規タスク入力画面を表示させ、必要項目を埋めていくけれども、その形式があんまり好きでなかったりする。
DynalistやObsidianの方が、好きなように記入できる。
タスクに対してメタ情報を入力しないため、後から実行タスクを分析したり、なんていうことはできないけれども、これまでろくに分析してこなかったけど全然大丈夫やったので気にならないし。
「なんにせよ転記は必要」と受け入れるために」でも触れたように、とりあえず、書いていくのが大事やと思うので、自分にとってとりあえず書きやすいタスク管理の方法が今の方法なので、手に馴染んでるのかな、と。
あと、Obsidianでは表示ファイルを画面上にいくつか並べることができるってのも大きい。
必要な、目に入れときたい情報を画面上に展開しておくことができ、今日のこと、今後数日のことを把握しやすい。

そんなこんなで、自由度の高い形で、好きなように書いていける管理方法を、最近は好んでやっています。

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

モバイルで使うときには、専用サイトを〜checkvistの使い方6〜

checkvistには、モバイルアプリはないものの、モバイル専用のサイトが用意されています。

ブックマークをホーム画面に追加すれば、ほぼアプリのような操作感で使うことができるようになっており、モバイルに適応した操作でcheckvistを使うことができます。できることは多少限定的になりますが、参照したりちょっと修正したりすることが可能な程にはモバイルに適応してくれている、という感じです。

モバイルサイトでできること

さらっとどんなことができるかを紹介すると、画像のように、サイト下部に4つのボタンが用意されているので、それらのボタンを使って操作することになります。
Image

+ボタン:入力

一番右にある「+」ボタンを押すが、入力画面への切り替えボタンとなります。押すと、

  • Add above:上に追加
  • Add below:下に追加
  • Create a subtask:子トピックを追加

を選択するポップアップが出てくるので、いずれかを選んで、入力画面にいき、文章を書いて「Done」を押して追記する、という仕様になっています。
ちなみに入力画面では、空行を挟むことで別トピック扱いになり、行頭にスペースを入れればインデントされた状態で追記されます。

…ボタン:選択業に対して4つの操作

右から2番目の「…」ボタンは、選択されている行に対して、「チェックを入れる」「重要度を設定する」「ノートを追加する」「Deleteする」のいずれかの操作を選美、実行できるようになっています。

共有ボタン

右から3つ目は、共有ボタン。押すと、 iOSの共有機能が呼び出されて、選択している行とその下位項目をコピーしたり別のアプリに受け渡すことができるようになります。
むちゃくちゃ簡単にリストの内容を別のアプリに受け渡すことができるので、とても助かる機能です。

フォーカスボタン

一番左の押しピンのようなマークは、選択行にフォーカスするボタンとなっています。
選択行がタイトルのように大きく表示され、それ以下の項目がずらっと表示されるフォーカスの機能です。
モバイル端末では表示領域が狭いぶん、階層が深いアウトラインはすごく見にくくなってしまいます。フォーカスの機能があれば、表示させる部分をコントロールできるので、見やすさがかなり変わってくるので、モバイルでは必須の機能かな、と思います。

その他の操作

そのほかの操作としては、ドラッグ&ドロップで項目の移動が可能となっています。行を長押しすることで移動できるようになり、移動によってインデントもできるようになっています。
また、すでに書いてあるリストを修正したい場合は、その行をダブルタップすることで編集モードに入ることができます。
リストの折りたたみ・展開については、行の左に表示されている「>」をタップすることで展開、もう一度タップすると折りたたんでくれます。
とまぁこのように、アウトライナーを操作することがモバイル環境でもできるようになっており、そこまでの使いやすさではないものの、一応色々とアウトライナーをいじることができるかな、という印象です。

タスク管理〜checkvistの使い方4〜

checkvistは、アウトラインの操作をすべてキーボードショートカットにより行うことができます。それにより、アウトライナーとして使うことができます。

それに加え、タスク管理もおこなうことができるのが、checkvistの強みである、と思います。

「タスクの管理」もできる

アウトライナーはタスクを扱いやすいけど管理はしにくくて歯痒い」というのが、アウトライナーを使っていていつも感じていることでした。おそらく、Dynalistくらいしか、この課題に対処できているものはないのではないかなーと思っていました。
が、checkvistは、タスクを扱うだけでなく、タスクを管理する方法も身につけているアウトライナーでした。
リストとして書かれた一つ一つの項目の全てに、日付を設定することができます。「DueDate」実行日を。さらには、実行日を設定されたものだけをみるページも用意されており、現在スケジュールされているタスクを簡単に確認できるようになっています。
Image

すべてのアウトライナーに言えることですが、アウトライナーはトピックごとの入れ替えや従属を瞬時に変えながら、書かれたものたちを整理していきます。この作業は、タスクにおいても有効なのは疑いようがありません。
何をどの順番にするのか考え、組み替えることができる。終わりまでの手順が見えないのであれば、細かく分解することができる。
そしてcheckvistではさらに、リストの一つ一つに実行日時を設定することができます。さらには、日付を設定されたトピックをGoogleカレンダーに表示させることまでも。

日付の設定方法

では、どのようにリストの項目に日付を設定するのか。これにもショートカットキーは存在します。
「dd」と押せば、簡易のカレンダーが表示され、日付を設定することができるようになります(下記)。日付を設定されたリストは、別のページ・Dueに表示されるようになります(上記)。
Image

これにより、アウトライナーを用いてタスク管理ができるようになり、まさにぼくがやりたかったことができるアウトライナーに巡り合えた、という感じです。

アウトライン操作とエクスポート〜checkvistの使い方3〜

checkvistでは選択モードと編集モードがあるがために、あらゆる操作に対してショートカットキーが用意されているのでした。

今回は、アウトライン操作をするためのショートカットについてみていきたいと思います。
普段はアウトライナーでの1行1行を「トピック」と呼んでいるのですが、checkvistはどうやら「リスト」と呼んでいるみたいなので、今後はそれに倣っていこうと思います。

アウトライン操作

checkvistはリストアプリで、作成したリストを自由自在に扱うことができます。表示できるし、折りたためるし、組み替えることができる。これはつまり、アウトライナーでもあるわけです。
そして、すべてのアウトライン操作についてもショートカットキーが当然の如く存在します。

  • Tab/Shift+Tab:インデント・アンインデント

インデント操作は、編集モード中でも可能ですが、その他の操作は基本的に選択モード中となっています。

  • Shift+Backspace:選択中のリストを消去
  • ⌘↑/⌘↓:項目の移動
  • ←/→:折り畳み・展開
  • Shift+→/Shift+←:フォーカス・アンフォーカス

選択モード・編集モードに分かれているという違いがあれど、基本的には他のアウトライナーと同じことができます。で、慣れてしまえば結構快適に操作できるなーという感じです。
実際、この文章はcheckvistを使って書いています。文章を書くには、通常のエディタとは違う部分が大きいため、少し慣れが必要かな、とは思いますが。

エクスポート

もし書いた文章を、checkvistから他に受け渡すことができないとなるとちょっと困ったことになるわけですが、ちゃんとエクスポートの機能を備えています。これが結構大事でして。
DynalistWorkflowyにも、エクスポートの機能はあります。なんなら他に書き写したい部分をコピーしてしまえば受け渡すことができるわけですが、この2つではiPadではトピックを跨いでのコピーができないようになっています。なので、気軽に「ここからここまでを別のところに受け渡そう」ってなったときに、その手段があまりない。
一方、checkvistでは、「ex」というショートカットですぐにエクスポートが可能となります。
エクスポートしたい部分を「Shift+↑↓」で選択して、「ex」と押せば、その部分を幾つかの方法でサクッとエクスポートできます。よくできてる。
まさに、iPadでアウトライナーを使いたいぼくのような人にはうってつけのアプリです。
基本的にやりたいことはすべてできるのが、checkvistの売りではないかな、と思います。

選択・編集の切り替えを自由自在に使いこなす〜checkvistの使い方2〜

基本的な使い方

操作について、これまで使ってきたDynalistWorkflowyと大きく違う点があります。それは、「選択モード」と「編集モード」があること。
選択モード中は、選択しているリストの背景が水色になります。
Image

一方、編集モード中は、リストがテキストエリアになり、文字を入力することができます。
Image

選択と編集を切り替えながら書いていくことになり、そこがDynalistやWorkflowyと大きく違い、操作に戸惑うところなのですが、おそらく切り替えがあるおかげでとても大きなメリットを生み出しています。
それは、ありとあらゆる操作に「キーボードショートカット」をあてがうことができる、ということ。
選択モードであれば、仮に文字を入力しても何も記入されません。なので、普段なら「Ctrl+アルファベット」とかにショートカットが設定されることになるわけですが、Ctrlを押す必要がない。ふつーのアルファベットをショートカットのキーにすることができる、ということになります。
実際、checkvistには、選択モード中に「ee」や「ex」、「ll」とか入力することでショートカットが発動します。おかげで、どんな操作に対してもキーボードショートカットが使えるようにできています。
だから、「キーボードでなんだってできる」list making toolな訳です。

選択・編集の切り替え方

checkvistを使うにあたっては、選択モードと編集モードを自在に切り替えることが必須となってきます。
まず、新たに追加する方法は、追加したい場所を選択しEnterを押すことで、選択しているリストの下に追加する形で編集モードになります。

  • Enter:下に追加

また、すでに書いたリストを編集する方法は、編集したいリストを選択して、「ea」を押せば末尾にカーソルがきた状態で編集モードになります。「ei」なら行頭にカーソルが、「ee」ならそのリストに書かれているテキストが選択された状態で編集モードになります。

  • ea:選択中のリストを編集(末尾にカーソル)
  • ei:選択中のリストを編集(行頭にカーソル)
  • ee:選択中のリストを編集(リスト全体を選択)

とまぁ細かく書きましたが、とりあえずは新規追加はEnterで、既存を編集はeiで、と覚えておけば大丈夫かな、と思います。

とにかくcheckvistを快適に使うためには、選択・編集の切り替えを自在にしつつ、リストを作成していくことがポイントとなってくるので、まずはこの書き方に慣れるのが先決ではないかな、と思います。

キーボードでなんだってできるlist making tool〜checkvistの使い方1〜

タスク管理のできるアウトライナーcheckvist

このアウトライナーがすごく気に入りまして、今ガシガシ使っているところです。もっと使っていこうと思っているところなので、自分の理解を深めるためにも、checkvistの使い方を色々と解説していこうかな、と考えました。

「checkvist」とは

checkvistのページには「Professional list making tool」と書かれているのですが、まさにすんごい色々できるリスト作成ツールです。
アウトライナーであり、タスク管理アプリでもある、リスト作成ツールです。

checkvistの良さ

ぼくがcheckvistと出会ったのは、「タスク管理のできるアウトライナー」を探しているとき。で、ちょっと使ってみると、アウトライナーとしても十分すぎるほどの機能を持ち合わせており、こんなアプリがあったんやなぁと驚きました。
他のアウトライナーと比べると、操作がだいぶと違うものの、そのおかげでだと思うのですが、他ではできないことがcheckvistではことごとくできます。何より、キーボードだけでほとんどの操作が完結するようにできているのが素晴らしい。
基本的にiPadで使っているのですが、checkvistを使っているときは、画面をタップしなければいけないことがほとんどありません。
どう扱うにせよ、ショートカットが用意されている。
基本的な操作感は他のアウトライナーの方が優れていると思うのですが、これできたらなぁってのが、特にiPadから利用しているとちょくちょくあったりします。でも、それがない。

基本的な操作は優れているけどできて欲しいことができなかったりするのをとるか、基本的な操作はちょっとクセがあるけどやりたいことがなんでもできるのを選ぶか、という感じです。

ーーー

まずはこの辺までで。
次回は、checkvistのアウトライナーとしての操作方法について書いていきたいと思います。

タスク管理のできるアウトライナーを発見「checkvist」

タスクをアウトライナーのように扱えるタスク管理サービスを探した昨日に引き続き、色々とまだ探してみました。
タスク管理アプリを探してみたり、リストアプリを探してみたり。
それでもなかなか見つからず、アウトライナーを探してみることに。これが功をそうして、いい感じのアプリを見つけることができました。
checkvist」というやつです。

アウトライナーなら話は早いわけです。だって、アウトライナーのようにタスクを扱えるものを探していたわけですから。
Image
キーボードショートカットはすこぶる充実しており、むちゃくちゃ多機能。ちょっと触ったくらいでは到底使いこなせそうにありません。
操作感は、DynalistWorkflowyは全然違ったものですが、慣れれば快適に使えそうな感じ。
何より、トピックごとに実行日を設定することができ、それをカレンダーに同期させることができるんです(Pro版にする必要あり。現在は、無料お試し中)。
Dynalistくらいしかカレンダーと同期する機能があるアウトライナーを知らなかったので、驚きとともにすんごい嬉しい。
で、むっちゃ多機能な割に、 Proの価格もDynalistほど高くないので、これなら手が出そう。全然出してもいいかな、と思えるレベル。
Image
とりあえず2週間無料トライアル期間があるので、その間じっくり使って行こうと思っています。で、それがいい感じであれば、メインに使うアウトライナーをcheckvistにしようかな、とも。

ーーー

最近使ってみたRoamReserchといい、いろんなアウトライナーのアプリがあってそれぞれに個性があり、面白くもあり、どれにしようか迷うのもあり。
とりあえず今はタスク管理のできるアウトライナーをメインに据えていきたいなーと思っています。

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

タスクをアウトライナーのように扱えるタスク管理サービスを探した

アウトライナーはタスクを扱いやすいけど管理はしにくくて歯痒いので、アウトライナーのようにタスクを扱えて、かつそのタスク一つひとつに日付を指定することができるタスク管理アプリやサービスを探し回ってみました。

まず前提として、ぼくがタスク管理アプリに求めるのは、

  • アウトライナーのように扱えること
    • Enter押すだけで次の行(タスク)が追加可能であったり
    • インデント可能であったり
    • 折り畳み可能であったり
    • 前後の入れ替え可能であったり
      • (ズームインの機能はなくても可)
  • 操作がキーボードショートカットでおこなえること
  • トピックごとに日付を設定することができること

とまぁ、いやいやアウトライナー使えばえぇやん、Dynalist使えば解決やんって話なのですが、なかなかPro契約に踏み出せなくて。(Googleカレンダー同期はProのみ)
でも、一生懸命探せばなかなかに有力なのも出てきまして。ざっと紹介していきます。

Todoist

Todoistは、やはり人気なだけあってすごい。

  • Googleカレンダーと双方向同期←これすごい
  • Web版であれば、キーボードショートカットでアウトライナーっぽく操作できる部分がある
    • ショートカットによる
      • タスクの追加
      • インデント
  • タスクごとに日付
  • 折り畳み可能(ショートカットでの操作はできない)

だいたい望みのことはできるのですが、これらはすべてブラウザでの動き。

  • D&Dによる順序の入れ替え(ショートカットではできない)

は、iOSだとアプリでしかできず、ブラウザではできないので、そこがちょっと引っかかる部分となります。
ただ、Googleカレンダーとの双方向同期は素晴らしすぎて、手放せなくなっちゃいそうなほど。

Dropbox Paper

Image

ドキュメント作成アプリなのですが、ドキュメント内のチェックボックスのついた行に関しては、日付を設定するすることができます。

  • アウトライナーのような操作
    • Enterで次のタスク入力
    • ショートカットにて
      • 順番の移動
      • インデント
  • タスクごとに日付

加えて、Dropbox Paperはドキュメント(文書)作成のアプリなので、タスク以外の文章も併記できるのもいいところ。
ただし、

  • インデントされていても折りたたみができない
  • タスクごとのカレンダー同期ができない←致命的

ので、無茶苦茶いい感じやのに使うのには踏み切れない感じ。

Taskade

Image

おそらく知名度は全然ないっぽいこのタスク管理サービス、なかなかに機能が充実しています。

  • アウトライナーのような操作
    • インデント
    • 折り畳み
      • これらはキーボードショートカットにて操作可能
    • D&Dにて順番の入れ替え
  • タスクごとに日付
  • Googleカレンダーに表示可能(表示のみ)

ショートカットによる順番の入れ替えができるようになれば、間違いなくTaskadeを使おう!と思っていたと感じるほど。
このアプリ、タスク管理のアプリというよりも、リスト形式のリッチテキストノートを作成できるアプリという感じで、なおかつリストの一つ一つに日付を設定できる。
さらには、Web版ではマインドマップ表示など、なかなかに多機能です。
ほぼほぼTaskadeを使おう、と思っていたのですが、一つかなり厄介な部分がありまして。
それは、URLさえ知っていれば誰でも中身を閲覧できてしまう、というところ。
これでは、個人的なタスクなんかをそこに書くことができません。なので、利用を断念。

ーーー

というわけで、決め手に欠く結果となってしまいました。おそらくは、おとなしくDyanlistを Proにして、Gogleカレンダー連携を使うことになっていきそうやな、という感じになっています。もうちょっと探してみますが。

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