Lambdaカクテル

京都在住Webエンジニアの日記です

サクサク年表君開発日記

年表を作るサービスを書いている。

世の中の出来事について調べたり知りたくなったりしたとき,大事なのはその背景を追うことだとよく言われる。瑣末な議論に惑わされないために重要なことだ。 だからまず年表を見たいと思うことが僕はよくある。今はまとめサイトこそあれど,年表を編纂するツールというのは見たことがない。

これがあったら非常に便利だと思ったから,作ってみたいと思った。年表同士がリンクしても良いし,同じイベントについて別々の年表が参照する,という形もありえるだろう。いつか飲み会の場でさんざん酔っ払った僕が同僚に提案しており,どういう技術スタックでやるか,といった話で盛り上がったのだが,互いに忙しかったり,チームを盛り上げて引っぱっていくのが得意ではないこともあり,ちょうど僕のメンタルも荒れていて酒を飲んでは荒れるという有様だったので,そのまま特に開発が動くこともなかった。あと僕は最新の技術スタックあまり詳しくないのでスベってしまう。

こういうのはまず自分でやってみるのが良いと思った。先に失敗しそうなところを知らずのうちに回り道させてもらえるよりは,納得ずくで失敗して血が出たほうがかえって勉強になる。 あんまりちょっかいを出されるとやる気を無くしてしまう性分なので,しばらくはちまちま一人でやることにした。いったん思う存分にわがままにやってみたい。「そこはこういう技術を使うでしょ」みたいなのをいったん無視して,好きにソフトウェアを書いて,それを出してみたいのだ。複数人だとどうしても「ちゃんと」したくなってしまうからダメだ。仕事じゃなくて遊びのソフトウェアをやりたい。

あと,「自分が書いたソフトウェアの代表作」とでもいったものがないので,あわよくばこれも欲しいという算段であった。自分はずっと,「何かを作り上げた」という達成感をうまく得ていなかった。

設計思想

まずは素朴で典型的なMVCアプリケーション的なのを作り,基本的な動作ができるようになったらJSON APIを書いたりGraphQL APIを書いたりして,フロントエンドではReactでもなんでも導入したらよろしいということにしている。いったんは小さくシンプルに,ロバストに作る。

また,開発する上でボトルネックになりそうな箇所は敢えて後回しにすることにしている。具体的にはDBまわりの環境を整備するといったこと。まずは動いて楽し~,みたいなのを感じたほうが絶対に良いと思ったからである。モチベーションを持続させたい。

また,それを実現するためにも後からDBまわりの実装をすりかえられるようにしておく必要があるが,Scala + Cake PatternでDDD的な設計をすることで後から交換可能にしている。リリースするまで,当分はインメモリで動かす。素朴なSeqで動いている。

デザインにかんしては素人なのでフレームワークを使うことにした。FomanticUIを採用した。Bootstrapでも良いのだが,これは個人的な好みである。

どういう感じで進めていきたいか

まずは典型的MVCアプリケーションとしてリリースしたい。このために必要なのが,DB周りの構築,年表作成UI設計,構成設定のコンフィグ,ECS化とALB,ドメイン。毎日DBはワイプするということにして,いったん認証無しでやる。アルファ版。

次にまともなWebアプリケーションとしての体裁を整えていく。Twitter等による認証,イベントのソース指定機能,素朴なマイページ,お気に入り機能,広告。

年表の相互リンク機能とかもそのうち導入したい。

無事リリースできました,という日が来るまで,とにかく飽きずにやれるようにしたい。幸いにも,やれることが沢山ある。