日記を大幅にアップデートした
今日、日記を大幅にアップデートした。コミット数でいうと 106 コミット分一気にアップデートした。
プライベート機能(プライベートタグで囲むと自分しか見られない機能)や直近 1 ヶ月間は日記を公開しない機能は cherry-pick して入れていたものの、それ以外の機能についてはだいぶ前からアップデートしていなかった。
その理由は、106 コミットの大部分を占める「テンプレート機能」にある。ここに書くような一日の記録や思考、アイデアを雑多に書くのとは別に、成長記録(今日はどんな成長があったか)や感謝日記(今日どんなことに感謝したか)、一日一善、学んだこと、気付き、気分など、テーマごとに分けて毎日記録をつけたかったので、そのための機能を前から実装していたのだ。
きっかけとしては、メンタリスト DaiGo の放送や本で、感謝を記録にすると良いとか、その日の気分を言語化するとメンタルが安定するとか、そういったことを知ったからだ。あとは、Google と YouTube の社員が執筆した「時間術大全」という本を読んだときに、「今日のハイライト」や「今日の集中度」、「今日試した戦術」とその効果はどうだったか、といった記録をつけたいと思ったからだ。
▲ 時間術大全のメイクタイム・メモ
そういった毎日書きたいテーマをテンプレートとしてファイルにメモしておいて、日記を書くたびにコピペするという手法でも実現できないことはないが、せっかく自前で日記システムを作っているのだから、それもシステム上、できるようにしたかったというのがテンプレート機能を実装し始めた理由だ。
ところが、実装が難航した。作り続けていくうちに DB 設計やデザインなどもどんどん汚くなっていった。それとは別に、開発当初はそういった生活の質を向上するための努力が楽しいと感じられていたのだが、徐々に仕事や生活のモチベーションが下がっていき、やる気も失われてしまっていった。
それから、去年の 12 月に、昔使っていた(今も契約中ではあるが)ConoHa サーバの容量がいっぱいになってしまい、日記を動かすことができなくなってしまった。4 月に AWS Lightsail に移行したが、その間はデータを移行するモチベーションもわかず、日記を書かずに放置していた状態だった。
そんな背景があって、なかなかこのテンプレート機能を本番環境にデプロイできずにいたのだ。
しかし、4 月に日記を復活させて、5 月、6 月は少しずつ毎日更新もできるようになってきたことで、また以前のようにこの日記を最大限に活用したいというモチベーションがわいてきた。
そしてちょうど昨日、久しぶりに日記の開発を再開した。しばらく触っていなかったので実装部分も忘れかけていたが、なんとか昔の記憶を取り戻すことができた。
まだデザインが荒削りで汚かったり、一部バグがあって動かない機能などもあるが、思っていたほど中途半端な感じではなかった。テンプレート機能はほぼ実装できていて、あとは細かいところを修正すればデプロイは可能な状態だった。
昨日、今日で食事する間も惜しんでひたすら開発を進め、なんとか本番環境にデプロイしても大丈夫そうなところまで仕上げた。そして今日の夜中、デプロイさせた。
追加された主な機能や変更点はこんな感じ。
- テンプレート機能
- これが今回の目玉
- デザインの大幅修正
- 環境変数 → DB への保存へ
- サイト名やサイトの説明文(サーチエンジンに使われるやつ)などを、今までは環境変数内に書き込んでいたが、変更する際にいちいちサーバにアクセスしなければいけないので、もっと簡易に変更できるように DB に保存するようにして、設定変更用のページを設けた
- 日記入力のエディタに機能追加
- タブキーで 4 文字スペース入力できるようにしたりする機能
- ただしこれはまだ簡易版で、ほとんど出来上がっていないのでこれからどんどん便利にしていく予定
- 未来投稿機能
- 日記入力ページから、その日の日記を何日後に公開するかを設定できる機能
- 内容によってはすぐに公開したくないものもあったりするので
- 特にその日の日記をその日に誰かに見られるのはなんか嫌なので、最新のものは見られないようにしたかった
- 一応、直近 1 ヶ月間の日記は公開されないような機能(1 ヶ月は決め打ちで、しかもすぐに公開したかったとしても必ず非公開になる)を臨時で cherry-pick して入れていたが、それの正式版的なもの
- ちなみに今日の日記はすぐに公開予定
- 未来投稿機能は 2 年以上前 に一度ほしいと思っていた機能なので、ようやく実装されたということになる
- 年表機能(β)
- 「(人生で)はじめて〇〇した日」とかを年表形式で見られるようにしたらおもしろいんじゃないかと思ったので追加しようとしている機能
- まだできていないが、とりあえずデータだけは入れられるようにしておいた
- それと簡易的だが、一応 データの一覧は見られるようにしておいた
ざっとまとめるとこんなところだろうか。他にもあるかもしれないが、開発にだいぶ間が空いてしまっているので、前の部分は忘れているかも。
まだまだ追加したい機能はたくさんある。
- 検索機能の強化
- OR 検索や AND 検索ができるようにしたい
- 検索は便利なので実装して良かったと思っているが、やはり OR や AND ができないのは不便だなとしょっちゅう思っている
- あと未来投稿の日記(まだ公開されていないもの)の最初の 200 文字くらいが、検索結果に表示されてしまうという致命的なバグがあるのでそれも直さないと
- パーシャルプライベート機能の改修
- プライベートになっている部分には色をつけたい
- でも先にプライベート部分をトリミングすると、(
<span>
の場合)マークダウンパーサにかけたときに閉じタグの位置がおかしくなってしまうか、(<div>
の場合)その中がパースされずにプレーンな状態で表示されてしまう - かといって先にマークダウンパーサにかけると、プライベートタグが消えてしまう
- HTML のタグの形式にしてしまったから
- エディタ機能の改修
- ボタンを押すと自動でプライベートタグを挿入したりする機能を追加したい
- というか今日記書いててタブキー押すとスペース入る機能がめっちゃバグっていることに気づいた
- 年表機能
これらの機能は、まあ気が向いたときにちょこちょこ実装していこうかな。
この日記システム、大学時代に作ったものだが、ここまで愛用するとは思っていなかった。自分しか得しないサービスかもしれないけど、作って良かったなあと思う。