コードを書いてくらす

プログラミングについて書いてます。

久しぶりすぎる更新

ほぼ2年ぶりのブログです。放置しすぎてある意味新鮮だ。
読み返したらRuby on Railsチュートリアルがほったらかしで終わってたりして、あまり知識のストックとしての目的は果たせてないものの、模索の痕跡というかちょっとした思い出にはなってる。

この2年も、もちろんコードを書いてくらしていました。
ここで模索していたようなWebアプリケーション開発をやっていたので無駄にはならなかったけど、コードについてというより別の部分で困難があったと、振り返って思う。
というのも、そもそもコードを書く以前の問題の方がすごく多い。

大まかな問題としては、

  • フロントエンドを実装する前にサーバーが起動しない、または時間がかかる
  • サーバーサイドの実装が更新されるとフロントエンドの実装が動作しなくなることが多い

など。
設計や構成をディレクションする立場ではなかったから、この「実装までの準備の時間」を直接的に解決できないことが大変だった。

反省を込めて振り返ってみると

  • フロントエンドはモックなどを使って実装し、結合は別の工程として作業する
  • フロントエンドとバックエンドの切り離し、または緩衝レイヤを設置するなどの実装の分離を徹底する

のように、工数の分割や実装レイヤの分離が不十分だった。
実装そのものは、ぶつからないようにファイル構成などがきちんと分離されていたので大きな問題は起きていなかった。

問題点は実装時の分離と結合に集約されると思う。
ここで気をつけたいのは、最終的なシステムの構成とコンストラクションの計画とは別だということ。
小規模のシステムであれば、個々のサブシステムを順次作り上げていき、最終的に結合する手順で問題ない。
けれどシステムの複雑さが増せば、それに伴うコンストラクションも単純であるはずがなくて何かしらの戦略が必要になる。

ここまで来るとSEの領分になってしまうので、実装のレベルで取れる対応を挙げてみたい。

  • 先行処理、後続処理の連結を緩やかにし、並行して実装できるようにする
  • 処理間のデータフローの視覚化


「並行して実装」は、前述の通りモックの利用やテストファーストな実装で実現できると思う。
またDDDのように処理を階層化することも良い。

「データフローの可視化」は、必要としているデータと入力データ、出力しなければならないデータと出力データの差分がすぐに確認できる状態にあると良いと思う。並行して実装していて、処理間の連結にずれが生じた時にすぐに発見できることが重要。これもツールを利用したり、システム内にデバッグ用のモジュールを組み込む、などで対応できると思う。


あまり大きな開発に携わったことがないので当たり前のことを書いているのかもしれないけれど、こういう知見を得られたのは良かったと思う。

それでは、今日はこの辺で。