かどで日記の技術の話#1「技術選定」(2022秋)
???「かどで日記レガシーじゃない??」
技術サイドの面接官の方が絶対に言いそうなことを予言しておきます。
自分でも分かってますよ。でも半分以上は意図的なんですよ……
かどで日記の技術選定の基準
ずばり、「維持」です。
ある程度放置しても維持していける技術を選んでいるということです。
枯れた技術の水平思考(厳密には違うが)
元任天堂の横井さんの言葉に
という言葉があります。かどで日記は僭越ながらそれに近いものがあります。ちゃんと言葉の意味を調べると厳密には全然違いますが!!!!
例えばイケイケベンチヤーが新規でサービス作るとなると、まずフロントエンドはNext.jsにして、バックエンドはGoかRustか、もしくはFirebaseで済ませるかと言った形になります。
ですが、それは令和4年の流行りであって、令和3年でも令和5年でもありません。とりわけWebフロント技術においては令和最新版なんてものはなく、1年もしないうちに流行り廃りがあります。
1年前に出された本を読んでもそのフレームワーク動かないよ?なんてのが本当にあります。
結果として今流行りの最新技術を用いて開発した場合
作っていく中で情報が少ない
バグに出会ったときの対処が難しい
日本語情報がないだけならまだしも、公式ドキュメントにすら書いていないんだけど……とかあります
デファクトスタンダードが定まらない
今後その技術が流行らなかったとき→リスクすぎる
脆弱性が修正されないレベルの廃りがあると、完全に積みです。使ってる土台ごと変える必要が出てきます……
今後その技術が流行ったとき→結局苦しむ
後方互換性のないアップデートが入って苦しんだり
デファクトスタンダードが変わり苦しんだり……
苦労して作った独自機能が後にフレームワークの機能で登場したり
と、現在進行系でも辛い上、技術が廃れても流行っても苦しむ未来が見えてしまいました……
もちろん後先考えず作った趣味サービスなんかは冒険して新しい技術を用いたりします。
新しい技術や流行りにはそうなる所以がありますし、楽しいです。
ですが、「かどで日記」は趣味開発であると同時に私自身が毎日続ける日記を支える、まさに自分にとってのライフラインでもありました。
個人開発と言えど簡単にサービス終了する訳には行かないのです。
大事なのは維持です。
結果として、ある程度リリースから時が経っており、安定して利用者がいつつ、メンテナンスもされている技術を用いることが適切という軸で技術を選ぶことになります。
東海道新幹線方式
もう1つ大事にしていたのが、過去に自分が使った実績のある技術ということです。
カッコつけて歴史的事例を参照すると東海道新幹線の設計思想とかぶります。賢者なので歴史に学んでいます東海道新幹線は新しい技術を寄せ集めてできた訳ではなく、すでにあった技術を結集させて実現されたことが知られています。
自動列車制御装置(ATC)もモーターの構造も気密構造もすでに存在する技術によるものです。すごかったのはそれらの組み合わせで、単体単体は実績のある技術だった訳です。
「かどで日記」もバックエンドに用いているLaravelはすでに趣味で開発実績があり、また自然言語処理に関しても利用実績がありました。
結果として「かどで日記」は私の中で実績のある技術の寄せ集めで作られています。
ちなみに「かどで日記」以外の趣味開発はまたしても例外で、何かを作るときには使ったことのない技術を使ってみることが多いです。ハッカソンでは初めて使うフレームワークで構築したり……
結論!
かどで日記は「維持」を土台として
ある程度登場から時が経ち安定している技術を選ぶ
過去に私自身が使った実績のある技術を選ぶ
を軸として技術選定を行っています。
その末路が「それレガシーじゃね??」です。
ちなみに反論しておくとPHP8.1は全然レガシーじゃないと思っています……(EnumもあるしUnion型も行けるし……)
今後の話
現状レガシーと思われがちな部分で否定できない代表格として
「バックエンドをAPIサーバーとして切り離さず、フロントエンドのレンダリングまで一緒に行う」方式があります。
維持という観点では満足しています……
一方で拡張性や責務分割の観点では疑問に思い始めてきました。
たしかにLaravelの機能で動かしてて、LaravelのLTSの観点を踏まえると維持はできるけど、今後の拡張性などを踏まえると維持のマイナス因子になってませんか……?って。
結果として2022年10月17日現在issuesに上がっている「フロントエンドの分離」に行き着きます。
そこで出てくるのがNext.jsという訳です。Next.jsは近頃企業での導入事例が増えてきており、枯れ始めている雰囲気を感じています。(個人の感想)
加えて、趣味開発での導入事例があり、使用実績という意味でもクリアしています。(内容はさておいて)
これらの観点からかどで日記にNext.jsを導入しようという話が進んでいます(といっても個人なので脳内会議ですが)。
おわり
技術の流行り廃りの見極めなんて難しすぎます……
なので趣味でいろんな技術に触れて、これいいなって感じていく日々を大切にしたいです。
同時に、かどで日記の冒険しすぎない技術選定の姿勢も大切にしていきたいです。