クラウドに次に必要なものは?

Shinpei Ohtani
Jun 4, 2016 · 6 min read

新しい職場にきて、3ヶ月ほどたった。まだ馴染みきったかはわからないが、まあなんとかやってます。

あんまり職場の細かいことは書かないが、正直いろいろな人がいる。メディア業界に近いような仕事の仕方や空気感もあれば、まさにエンタープライズなところもあるので、AWSの経験がなかったら相当とまどっていただろう。最後の方は同じことを感じていたがこの間の架け橋をなんとかしていくことで、よりベターなシステムが作れるのではという仮説をもっている。あまり合理的ではない部分をそぎ落とし、フレキシブルに対応すべき部分はフレキシブルに、プロセスと品質重視で対応すべき部分はエンタープライズらしいやり方の方が好ましい場合だってあるのだ。要求されているもので答えが変わる、当然だけどそれがなかなかできない事。こうでなければいけない、こうであってはいけない、同じ業界に長くいる・同じところに長く留まることで見方の癖みたいなものはつくと思う。良い場合もあれば、悪い場合もある。

さて本題。いわゆるインフラ側面だけではなく、最近では見る範囲が格段にひろがって、嬉しい限りである。が、しかし、難しいなと感じるのがクラウドはインフラストラクチャの技術に精通する人の範囲をでていない。これはAWSだけの話ではない。他も程度こそあれ似たようなものだと思う。いま所属する会社ではIT部門のあちらこちらでS3が、SQSが、と聞こえてくる状況で多分僕の元お客様の人たちからすると驚くような状況だとは思う。しかし、それでも同様のことを感じる。基本的に、クラウドの可能性や実現できる能力のほとんどを発揮できていないと思っている。正直このままではいつまでも発揮できる気もしていない。いま考えうる原因はいくつか述べてみたいと思う。なるべくマインドとかそういうふわっとしたことではないものを選んでみた。

1つ目。アプリケーション開発技術の進化と融合されていない。アプリケーション開発技術もさまざまな発展をとげている部分もあるが、クラウドとは無関係な形で別々に進化している。もっとトータルで生産性をあげよう、開発者の負担を減らそうという試みがあってもよいと思う。アプリケーション開発をする人からすると、正直クラウドどうでもいいという現実があるのだが、この隔たりを超えるにはまだ色々なものが必要に思う。すぐ思いつくのはクラウドを前提とした設計方法論(インフラストラクチャのものではない)やパターンの集積などが必要に思う。ある程度決め打ちで構わない部分も多いわけで、同じ言葉で同じ文脈で語れるようになれば理解が圧倒的にはやくなる。今までの方法論はオンプレミスを前提にしたインフラストラクチャが固定的なことを前提にしている、クラウドはダイナミックな環境なのでその前提が覆った時にどういう事を考えるべきか、まだ確固たる答えがあるわけじゃないけど、間違いなく必要性を感じている。次が長期的になるかもだけど、基本的に開発行為・テストもクラウド上でシームレスに実行されないかぎり、多分今の枠を破ることはない。なので必要な物はIDE、およびテストスイートのようなものではないかと思うし、CI/CD含めて統合で利用できる状況が望ましい。昔から言っている点としてよく笑われるのだけど、クラウドを前提にしたプログラミング言語だって必要だとも思う。

2つ目。トレーニングとプロジェクトの不足。もう強制的にインフラストラクチャからアプリケーションまでやってもらう状況を作って、実行していくしか無いとも思う。そのための準備は大事なので、トレーニングはしてもらいながら、可能であればプロジェクトをクラウドベンダーと一緒に実行してノウハウやプラクティスを共有して、経験値をためていく。Pivotalさんから何かもらってるわけではないけどw、まさにPivotal Labsがその良い例だと思うし、あれ以外の方法を思いつかない。利用者から数名、ベンダーから数名、同じチームで数ヶ月間徹底的に実践する。テクノロジー単体で覚えるのでは全く意味は無い。考え方・スタイル込みで経験値をつまないかぎり、非常に局所的な最適化で終わるし、残念ながらそれがほとんどの場合で実態だと思う。そして人はそう簡単に変わらない、変わりたいと思わないかぎり。なので強制ギブスみたいなもの必要だと思う。ここが一番難しいし、ベンダー側からの立場からみると、やっぱりここは時間もかかるしスケールしないしできれば避けたい、という領域になる。でもやっぱり現実エンジニアはじゃあお前やってみせろよ、って思うわけで。だったら見せてやるよってところをいかに築けるかが鍵になる。

3つ目。身も蓋もない話だが、SIでは難しい。いくら優秀なSIでも事業の意思決定には入れない。インフラストラクチャからアプリケーションまでトータルで総合的に能力を高めたいからクラウドを使うわけで、SIが主体的にそこまでやりきれるとは思えない。残念ながらSIはどこまでいっても部分最適でしかない。クラウドのより大きな活用は、ユーザーサイドで内製が増えてこないと厳しいのが現実だ。ここはどうしたって難しいのは理解できるし、全部をやりきるのはどの企業さんでもある程度の規模があると難しい。しかし、クラウドをうまくつかうことでコストを最適化しながら、利益を最大化できる余力ができる。でもそのためには、インフラストラクチャだけのものから開放し、なるべくアプリケーションを書く人・業務を知って新しい事業やアイデアを試していく人が出来るだけ多く知っている必要があると思う。結局新しいアイデアを具現化して事業に貢献できなければどんなインフラストラクチャでも無意味だ。

ほとんどの人が自分で1万台のサーバで同時に計算をさせ、今までできなかったものができると思っていない。ほとんどの人がアプリケーションの書き方をクラウドをより活かせる書き方をすることで今までどうしても出来なかったものでも実現できると思っていない。自分が思うクラウドの本質は、アイデアのある人の能力を引き出す・ITインフラストラクチャ的な制約からある程度開放されることで大きなベネフィットを出すことにあると思う。ここをどうやれば実現できるのか、これはユーザー企業でないと出来ないと思う。これが、悩ましいし楽しい。

Shinpei Ohtani

Written by

Father/Architect/Programmer/Open source lover