B-Teck!

お仕事からゲームまで幅広く

【雑記】ネットサービスと機械によって生かされるタスク管理

突然ですが、私はとてつもなく怠惰です。
やらなければならないことをやろうとすれば先送りにし、やりたいことがあればズルズルと続け、
力尽きるように寝て、日の陰る頃に目覚める、そんな生活ばかりをしてきました。

30にもなり、こんな生活では当然身体の調子が良くなるわけもなく、
土日ひたすら寝ても調子が上がらない、平日の能率が悪いからより無理をする、
そしてまた土日を寝て過ごす…そんなループの中で暮らしていたような気がします。

そんなわけで今年一年、様々な生活の改善を模索してきたんですが、
ようやく個人的に良いサイクルが作れたなと思えてきたので、書き記しておこうと思います。
まだ本運用に乗ってから短く、半年もしたらあの方法はクソ!と言ってるかもしれないですが、
それはそれ。

すべてのタスクをTodoistに集約する

私は、あらゆるタスク管理を基本的にTodoistに集約して行っています。
業務でも、プライベートの予定でも、掃除や洗濯、食事などにいたるまですべてタスク化し、
仮の実行時間を入れて、必要なものは定例タスクとして登録しています。

f:id:beatdjam:20201202234214p:plain
これはある土日の予定タスクを表示したカレンダーです

タスク化のフロー

タスク化されていないのに繰り返している行動に気づいた時は、よく行っている日時を思い出して定期タスクとして登録します。
また、5分以内に終わらないだろうと思われるタスクはその場で登録し、実施する予定を設定します。
特段急ぎではないタスクでも、とりあえず設定することが望ましいです。

Google Calendarとの連携

TodoistはGoogle Calendarへの連携機能があり、Google Calendar上では終了予定時間を登録した上で各予定を俯瞰することができます。
つまり、意図して行う大半の行動に開始時間と目標達成時間が設定されるということです。
また、 この連携機能は双方向での編集が可能となっており、Google Calendar側で作成した予定もTodoistに取り込むことが出来ます。
この特性を利用して、別のカレンダーの予定をGoogle Calendar上で複製し、そのまま取り込むことも出来ます。

すべての行動をTogglで計測する

自分が行うべき1日の行動の雛形が出来上がります。
ですが、繰り返しの予定であれば特に、雑な見積もりによって正確ではない状態となっています。
そのために必要なのが、計測です。
私は今年初頭より、毎日24時間の行動をすべてTogglで記録するようにしています。
この記録を元に、修正や変更など、より現状に即した予定へとブラッシュアップしていきます。

f:id:beatdjam:20201202235251p:plain
あまり覚えてませんでしたが、1月頃からはじめたようです

Chrome拡張

ぶっちゃけ、慣れるまではTogglでの記録は本当にめんどくさいし、忘れます。
慣れれば、行動の区切りとして自然と記録できるようになるのですが…
ただ、Todoistにタスクが登録済みであり、PCの近くで行動する場合、Chrome拡張を用いてTodoistのタスクから記録することが出来ます。
Toggl Track: Productivity & Time Tracker - Chrome ウェブストア
言ってしまえばタスク一覧に記録ボタンを出すだけなのですが、これが非常に便利でした。

過去に書いたこの記事なんかにも登場していますね。 blog.beatdjam.com

アプリ(Android)

PC前以外の場合や、外で行動するときはアプリ経由で記録を行っています。
このアプリはあまり出来が良くなく、起動時にうまく読み込めなかったり、タブ遷移に失敗したりと散々なのですが、
過去の記録と同様のものがあればそこから同じ記録を開始したり、あるいはすでに記録済みのものの編集ができたりします。

すべての場面で通知する

毎日の生活の中で必要な行動を見つけ出し、記録し、改善するサイクルが出来上がりました。
でも、いちばん大切なのって実行することですよね?気づけなければ、意味がありません。
ここで私が利用しているのが、Miband4です。
blog.beatdjam.com

Todoistの通知をスマートウォッチに届くように設定し、どういった場面でもタスクの存在を意識するようにしています。
別にこれはスマートウォッチなら何でも良いんですが、なぜMibandをおすすめしているかというと、

  • 安い
  • 防水
  • 長期間電池が持つ

といった特徴を持っているからです。
いつでもやることを意識するには、いつでも身につけていられなければなりません。
常時つけていられる、壊れても買い直せる、という点を重視しているためです。

おわりに

これらを行うようになって、毎日今日は何をしなければならないのかとゼロから予定を立てることがなくなりました。
事前にある程度の見通しをもったスケジューリングが可能になっています。
どのくらい残業や夜ふかしをしたら生活や睡眠時間に響くのか、ぼんやりとしかわかっていなかった様々な部分も明確になりました。
まだまだ良くできる部分はたくさんあると思いますが、現状こんな感じです。
この記事のどこか一部でも、良さそうだな、やってみようかなと思うことがあって、皆さんの生活がよくなれば良いなと思います。

【Vim】vimtutorを終わらせたので内容を自分用にメモ

基本操作

  • カーソルの移動はhjkl(左下上右)で行う
  • vimの起動は vim {ファイル名}
  • vimの終了
    • 変更を破棄 :q!
    • 変更を保存 :wq
  • テキストの追加
    • i/I 挿入モード/行末から挿入モード
    • a/A 追加モード/行頭から追加モード
    • o/O 下の行を追加して挿入モード/上の業を追加して挿入モード
  • 操作の取り消し
    • 前回の操作を取り消し u
    • 行全体の操作を取り消し U
    • 取り消し操作の取り消し CTRL-R
  • キーを押すとノーマルモードに戻る
  • 文字の削除 x
  • 削除/ヤンクはそれぞれ対象をレジスタに格納する
  • レジスタに登録されている文字列をカーソルの後に挿入
    行単位で格納されている場合はカーソル行の次の行に挿入
  • カーソルの下の文字を置き換え r
  • 検索
    • / の後に語句をタイプすると前方に語句を検索
    • ? の後に語句をタイプすると後方に語句を検索
    • 検索後のカーソル
      • nは同じ方向の次の検索
      • Nは逆方向の検索
  • 文字列の置換
    • 現在行の最初の old を new に置換する :s/old/new
    • 現在行の全ての old を new に置換する :s/old/new/g
    • 2つの # 間で語句を置換する :#,#s/old/new/g
    • ファイルの中の全ての検索語句を置換する %s/old/new/g
    • 'c' を加えると置換の度に確認を求める :%s/old/new/g
  • (,),[,],{, もしくは } 上にカーソルがある状態で % をタイプすると対になる文字へ移動
  • :!command によってOSの外部コマンドを実行
  • :r ファイル名で、指定したファイルの内容がカーソル位置に挿入される
  • vを押すとVisualモードになり、カーソルを動かすことで、選択範囲を変更することができる
    選択範囲に対してオペレータを入力することで適用できる(dで範囲削除など)
  • コマンドで記載するモーションはノーマルモードで入力したとき対応した場所へカーソルをジャンプさせる
  • ":set xxx" とタイプするとオプション "xxx" が設定される。
    • ic 検索時に大文字小文字の区別しない
    • noic 検索時に大文字小文字の区別する
    • nu ファイルの行数を表示
    • nonu ファイルの行数を非表示

vimのコマンド

  • vimのコマンドは オペレータ [数値] モーション
    • オペレータ 削除を示すdなどのコマンド
    • 数値 その操作を何回繰り返すか(任意)
    • モーション w(単語) $(行末) などの、コマンドを適用する範囲
      例)
      カーソル位置から単語の末尾までを削除 dw
      カーソル位置から行の末尾までを削除 d$
      行全体の削除 dd
  • オペレータ
    • d : 削除
    • y : ヤンク(コピー)
    • c : 変更
  • モーション
    • 0 : 行頭
    • $ : 行末
    • w : カーソル位置から空白を含む単語の末尾
    • e : カーソル位置から空白を含まない単語の末尾
    • G : ファイルの最終行
    • 数値G : カーソル行から数値で指定した行までの範囲指定
    • gg : ファイルの先頭行

【Kotlin】範囲同士の重なりの有無を判定する

2つの期間が重なり合うかどうかを判定する。 - こせきの技術日記
によると、 始点2 <= 終点1 && 始点1 <= 終点2 で網羅できるらしい。

雑にいくつかテスト書いてみたけどたしかに大丈夫だった。すごい。

以下余談。
雑に書いたコードをコミットして適当にブログに上げるようにsandboxリポジトリを作ってみた。
日付のファイルを作って適当に書いてここに引用する感じで運用できたらいいなあ。

Gitのファイルをブログに表示するために gist-it.appspot.com - Embed files from a github repository like a gist を使ってみた。
野良サービスなので突然消えたら怖いな…と思うものの、便利なのでしばらく利用していってみる。

IntelliJで新しくプロジェクトを作ったら build.gradle.kts が生成されてびっくりした。
testブロックの書き方がこうなのに気づかず、しばらくハマってしまった…

tasks.withType<Test> {
    useJUnitPlatform {
        includeEngines("junit-jupiter")
    }
}