tDiary の 15 周年をお祝いするイベントが開催されました。tDiary は Web 日記を実現するオープンソースソフトウェアで、少なくとも 25 年間は日記を書き続けられることを目標としています。2001 年 4 月に誕生し、15 周年となる今でも開発が続けられています。
会場には tDiary が好きな人が 12 名集まり、お菓子を片手に和気藹々と tDiary について語り合いました。
トップバッターは tDiary の創始者である、ただただしさんです。tDiary が 25 歳になる 10 年後に向け、今後の展望を静かに、でも熱く語ります。
tDiary は 25 年間続けるプロジェクトです。4 月 20 日で 15 歳になりました。25 歳になるまであと 10 年残っています。
これまでの 15 年で進化したところは、最新の環境へ追従できていることです。Ruby は最新版の 2.3.0 に対応する一方で古いバージョンのサポートはばっさりと切っています。実行環境は Rack、PaaS、docker、HTML5 などの新しい環境に対応し、開発環境も GitHub、Heroku pipeline、Travis CI を使うようになりました。一方で、あまり進化していないところは、スマホアプリへの対応、性能の向上です。よくスマホアプリはないの?と聞かれるものの、レスポンシブデザインに対応することで必要性が薄まっているとのことでした。また、tDiary は相変わらず遅いものの、高負荷による 503 エラーが怖くておいそれと炎上できずに平和とも言えます :)
これからの 10 年を考えたときに、「死んだ後も自分が日記の中に残っていてほしい」と考えるようになったそうです。ここで、たださんが「自分が死んだ後に日記を残したくない人」と質問します。2~3 名の方が手を挙げると、「ほとんどの人が手を挙げると思っていた。死んだ後にも日記を残したい人がこれだけいるとは、これからの話は与太話のつもりだったが、これでは与太話にならなくなる」と言って、会場の笑いを誘います。
日記を書き続ける価値は、古い話題が残ることです。たとえば、「ループは人の業、再起は神の業」という 2007 年の酒井さんの日記でのリンク先が今でも残っていることや、結城浩さんのツイートをきっかけに2003 年の日記を読み返して出会いを思いだすなど、日記を残すことは大切です。オデッセイという邦題で映画化された火星の人は、火星での 1 年間のサバイバルを日誌形式の文体で表現しています。この小説は日誌というより日記の面白さがあります。感情がこもった日誌=日記であり、感情がこもっているからこそ日記と言えます。
さて、10 年後の Web 日記の読者は誰でしょう。主な読者は人工知能になっていそうです。今でも読者の半数は bot であり、今後の読者が bot から人工知能に変わることは十分に考えられます。今の人工知能は特定の分野に特化していますが、いつかは汎用の人工知能が実現できるでしょう。AlphaGo がそうであったように、おそらく人類は人工知能のことを理解できません。では逆に、人工知能は人類に興味を持つでしょうか。持ってもらいたいという想いがあります。人工知能が人類を理解するためのポイントは「感情」になるでしょう。人工知能は身体を持たないので、人類と同じ感情は生まれないでしょう。代わりに、同一人物が時系列に沿って事実と感情を記録した日記が、人類を理解するための手段になるでしょう。人工知能が十分に進化する未来まで、Web 日記を残し続けたい。Web 日記を永続化することが、10 年後の tDiary の目標です。
日記を残し続けるための技術的なハードルは 3 つあります。ストレージ、ホスティング、名前解決です。ストレージ、データを置く場所はインターネットのすきまで生きることでなんとかなりそうです。システムを動かす場所であるホスティングの問題と名前解決の問題は、まだまだ解決が難しそうです。URI が変わらなくとも、未来のアーキテクチャーは Web でなくなっているかもしれません。
ともあれ、日記を楽しく書き続けましょう!
tDiary は遅い。とうことで、高速化の手法について話します。
高速化のまえに計測が重要です。stackprofというプロファイラを自分の日記に仕込んで 1 日動かし、どこに時間がかかっているかを計測します。それで、いくつかのボトルネックが見つかります。
他にも、CGI::Util#unescape に時間がかかっていますが、これは Ruby2.4.0 で C 拡張化され速くなるとのこと。最新の Ruby を使うと tDiary も恩恵を受けられそうです。そうして残ったのは、tDiary のプラグイン呼び出しです。複数のファイルをそれぞれ読み込んでから eval していますが、これを先に連結してからまとめて eval することで速くなるなど、まだまだ工夫のしがいがたくさんありそうです。
tDiary の高速化で苦労したところは、テストの難しさだったそうです。CGI 時代の名残りでクラスが密結合しているところがあり、それぞれ stub や mock を用意する必要がありました。それでも、Rails とちがって tDiary はまだまだハックの余地がたくさん残されていて楽しい!と、嬉しそうに話されていたのが印象的でした。
会場からは、tDiary での日記の更新に時間がかかるという質問がありました。しばたさんからは、本体はそれほど遅くないはず、プラグインで時間がかかっているかもとの答えでした。ただただしさんからは、プラグインを並列処理すれば速くなるかもしれない、というアイデアも出ていました。
party のために用意したお祝いのケーキを現在のメンテナ 3 人で入刀し、参加者全員でおいしく食べました。
参加者のみなさんからも自己紹介や tDiary への想いを順番に話していただいた後、参加者全員で記念撮影をしてイベントを締めくくりました。