Subscribed unsubscribe Subscribe Subscribe

SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

アジャイルサムライ.

単純な好奇心として最適な開発スタイルに対する興味がある。DevOpsやらアジャイル、それらの中にあるツール類やら、自分達の開発はもっと良く出来るんじゃないかとよく考える。そのためのインプットとして本を読んだり技術を触ったりしているのだが、最近、アジャイルサムライという本を読んだ。この本は有名なアジャイルの本なので感想ならWebのいたるところにあるんだけど、個人的にはWFとアジャイルの共存ってどうすれば実現するんだろう、という観点で読み進めた。学びはあった。実践出来るかさて置いて。

SoRとSoE

ここ数日前からSoRとSoEという考え方が普及し始めて、SoRの主流であるWFとSoEの主流であるアジャイルの共存について考えるようになった。

というのも、一ヶ月前くらいに会社の同期から「アジャイルについて聞きたいことがある」と言われて話した内容が、まさにSoRとSoEの考え方だったからだ。SoRとは、System of Recordの略で、ミッションクリティカルな記録のためのシステム、つまり基幹システムのようなものを指す。SIerがWFを駆使して強みにしている分野だ。一方でSoEは、System of Engagementの略で、ユーザとの関係性を構築する、ユーザに近い部分のシステムを指す。ここはWeb側がアジャイル開発で強みにしている分野だろう。

その同期が相談してきた内容としては、ボタンを一つ追加するだけで、数ヶ月という時間がかかるのをアジャイル開発でスピード感を持って開発したい、ということだった。よくある話だろう。そんな話をすると自然とユーザに近いシステムからアジャイル化だね、という流れになる。冷静に考えると当たり前なのだが、口で言うのは易し。実際にWFでガッチガチに開発していた一部分をどうやって、アジャイル化するのか、というのは難題だ。

MicroService

昨今のユーザ企業での内製化の流れはSoEの部分にメスを入れるというものが多いと思う。要は全部のシステムを自分達で巻き取って内製化するのではなく、SoRの部分はベンダーに任せたままで、SoEの部分を切り離して自分達でアジャイル開発する、という流れ。これはどうしても進んでいくと思う。

冷静に考えて、ボタンを一つ追加するのに数ヶ月とかやっていられない。個人的には3ヶ月サイクルのシステムしか経験してないので、それ以上かかるシステム、特に年単位のシステムは想像も出来ないが、SoRの部分はやりたいことによってはしょうがないのだろうな、となんとなく思う。

で、この切り離しの部分をどのように実現しているのかが凄く気になっている。始めてこの話を聞いた時にパッと浮かんだのはMicroServiceだった。コンウェイの法則に従って、SoR部隊とSoE部隊に組織構造からメスを入れて、全ての機能をAPIを通じてやり取りをさせる。要は疎結合アーキテクチャを設計しないと二つの手法(WFとアジャイル)の共存なんて出来ないんじゃないかという考え方。一般的に既に動いているシステムをMicroService化させていくやり方がよく推奨されているので、SoRなシステムをMicroService化&SoE分離させていくのが腑に落ちる。

勿論、SoRとSoEの仲を取り持つマネージャが必要になるし、それら二つの組織が乗る共通のインフラも必要になる。加えて、アルゴリズム検証チームなんて組織があるとより面白いプロダクト開発が可能になるんじゃないかとも思った。アルゴリズム検証チームはデータマイニング機械学習のモデルを検証するチームであり、プロダクトに組み込むアルゴリズムを開発する。なんだか良さげなチームに見えないか。

隣の芝と自分とこの芝

ここまで書いて気付いたこととしては、これは自分の中の理想だな、ということだ。ずっと不満に思っていたこととしては、SoRに全振りのチームばかりの会社への物足りなさ、同僚エンジニアに対する技術力の無さだった。それはSIの特徴とも言えるもので、社外に目を向けるようになってからWebの世界、つまりSoEの世界がより一層青い芝に見えるようになっていった。

そしてデータマイニングチームにアサインされてから、アイデアだけで勝負することに対して課題感を持つようにもなった。ここに書いたことは、それぞれの分野の専門家が一つのプロダクトを作ろうとしている形だ。きっとこの世界観が自分の求めるもので、そこに入って何かを作りたいから技術を磨いているんだと思う。

まぁしかし自分はまだ偏った開発経験しかない。データマイニングチーム的なところにいるので、SoRなチームからはもう割と離れてしまったが、SoEアジャイル開発は依然として経験出来ていない。情報集めをしていると、たとえば、設定用フラグのフレームワーク、reputation 評価を備えたチェリーピックツール、HashiCorpのツールを使ったデプロイ、サービスディスカバリー... こうした具体的な実装への興味は尽きない。まだまだこの分野は自分にとって隣の青い芝でしかない。だから早め早めにいろんなところを経験したいという想いがある。一つのところにずっといることは一番の遠回りだと思う。

この頃こうしたことをゴニョゴニョと考え過ぎていて、時間の使い方を間違えている気がする。というかレイヤ違いが過ぎるのか。これ考えるのはCTOの仕事だからな。最近上司にこれをやってくれと頼まれたりして、「いやこれってCTOの仕事なんで、僕じゃないでしょ」と言ったら、「実績作ったら年収グンと上がって転職し放題だよ。やろうよ。」みたいな上司あらぬ発言を受けたけど、いずれやれたら楽しいなとも思う。まぁこれは先の話だ。今はいろいろ力量不足。

Remove all ads