概要
このエントリは、「Enterprise "hello, world" 2018 Advent Calendar 2018」の12/2向けのものです。このAdvent Calendarでは、複数個のエントリにまたがる話の流れも鑑みつつ、なるべく1エントリで1つのトピックをカバーできるようにする予定です。
このエントリで記載するトピックは、計画とか設計の話です。
前提
前提は、「Enterprise "hello, world" 2018」に準じます。
想定読者
「Enterprise "hello, world" 2018」的なネタとしては、下記のような状況を想定しています。
Day1で渡されたバイナリの動作は分かったので、これを今風のアーキテクチャで動かさなければいけないことになったのだけれども、さてどうしたものか。
考え方
(どうせ、作るものは"hello, world"っていうだけ、というのは置いておいて)これから作るシステムが何を目的としていて、どうやってシステム化することで何を解消しようとしているのか、動かし方はどうするか、といったことを考えておくことが必要になります。
大きく2派あると思いますので、それぞれをトピックとして取り上げたいと思います。
参考として、TIS株式会社さんの「Fintan」を使わせていただきます。公開どうもありがとうございます。
慎重に進める派
ここはやはり、どーんとウォーターフォールで考えましょう。
前提で紹介したここらあたりを参考にしながら、開発プロセス標準に従い、以下を確かめましょう。
- 何を実現したいのか
- そのために何を作りたいのか
- 作りたいもののために何が必要なのか
- 必要なものをシステムとして実現するにはどうするか
- システムが実現されたことをどう確認するか
- システムが動き続けるにはどういう体制でどう取り組むのか
参照先には、エンタープライズでよくあるフォーマットも格納されているので、参考にできるかもしれません。
参照先は、WBS(お仕事の全体なスケジュール)として定義する内容、作成すべき成果物(アウトプット)について、だれがいつやるべきかについて一覧になっているので、議論を始める前提として活用できそうです。
とにかく始める派
こちらは、いわゆる"アジャイル"的な方式です。
回し者ではないのですが、前提で紹介したここらあたりには、アジャイルで物事を進めるための考え方、体制の作り方、取り組みなども挙げられています。
このAdvent Calendar的な意味で言うと、まずは「インセプションデッキ」を書いて、何を実現するためにこの開発チームは集まったのか、から確認していくフェーズになるでしょう。
ゴールに対して少しずつ、動く形で確認できるものを作りながら進めるやり方も、とくに「いろいろ試してみなくてはわからない」領域においては、有効な手段です。
とにもかくにも
EHW2018的に実現されるべきことはカレンダーの概要に書かれたことがすべてです。
(単にhello worldと返すだけのものとしては)なるべくめんどくさく、システムとしてまとめ、コンテナ化されたものがデプロイされる動作確認できるようにしていくものとします。
これが実現されていれば、本プロジェクトのゴールは実現されたものとします。
どちらの手法をとったにせよ、最終的には、きちんと動作するシステムがなければ意味をなさないことには変わりがありません。
二つの手法は、思いが異なる複数名の人たちが、形が見えにくいシステム開発という中でどういう進め方にしようか、という大まかな取り決めを指すものだろうと考えることにして、このAdvent Calendarでは、日数もないことですので、後者の「とにかくはじめる派」方式で取り組むというデザインにします。
まとめ
このエントリでは、「Enterprise "hello, world" 2018 Advent Calendar 2018」(EHW2018)の2日目として、
進め方の話をトピックとして取り上げました。
EHW2018のネタとしては、このあと、このプログラムと同じような目的を持つものを現代的なツール群を用いて、なるべくめんどくさく実現していくことを考えています。