技術選択は洋服みたいなもの、開発者は自分のスタイルを知ろう
吉羽 片山さんは、技術の目利きの方法って何かあります? ある技術に対して筋が良さそうか悪そうかの見極め方。例えば、ホットなものに乗れだったり、有名人が触っているものに触るってのもありますよね。
片山 僕の中では、プログラムを書くのは、物理的なモノを作るのと同じように感じています。モノを作る時「このコテ持ちやすいな」ってあるじゃないですか。プログラムも、書きやすい、書きにくいっていうのがあるんですよね。例えばライブラリでも、このIDでこのような情報が取りたいのに、それが可能なAPIが揃っていないものだったり。そもそも設計思想が違っていて、そんな使い方はできなかったりというのがあったりするんですよ。
なので、僕がいつも使うライブラリを決める時は、サンプルはもちろん見るんですけども、こういうプログラムを作る時にこういうIDがあって、こういうデータがあって、こう組み合わせられるといいなっていうイメージにハマるものを好んで選んで使っています。ある意味、洋服みたいなものなので。
吉羽 ああ、洋服ね。いい例え方ね。
片山 逆に、自分の着たい服がよく分かっていれば、ライブラリやサービスが選びやすいと思うんですね。僕は、Java、Spring、AWSのような、割りとノーマルなものを選びがちですけど、それは僕の着てる服が凡庸だからであって、尖った人はまた違ったチョイスになると思うんですよね。だから自分のスタイルがわかるとすごくいいですね。
吉羽 洋服の例えだと、雑誌のコーディネート集を見てセンスを身に付けますよね。何もないところからセンスって出て来ないと思うんですが、片山さんのなかで、ベース、血肉となっている部分って何でしょうか。
片山 僕が全然プログラムを書けなかった時は、とにかく何かを作ってましたね。例えば、グラフを出すライブラリを、初めはJavaで作ったんですが、その後に色んな言語や方法で作ってみたりしてたんですね。それ何がいいかっていうと、テストが楽なんですよ。要は結果がわかってるから、それを達成するためにこう後付けでものを付けていけばいいので。
吉羽 ああ、自分が求めてるものがはっきりしてるから。
片山 そうすると、色んな言語やフレームワークを比較できるから、どれが自分の中で効率がいいかが分かってくる。もちろん開発ツールも一緒ですね。例えばプログラム言語を何か1つ使えるんだったら、簡単なお題でもいいので、自分の身の回りのことを解決する。できれば自分事がいいですね。それをどう実現するかを他の言語、他の技術を使って複数パターンでやってみるのは、いい手段だとは思います。
吉羽 そういうの、僕も似たようなやり方をしています。SlideShareってあるじゃないですか。あれと似たようなものを、AWS上のクラウドネイティブアーキテクチャで、オープンソースで作ったあと、今度はAzureでも同じようにやってみてます。
片山 2回目作る時って、画面はもう作らなくてもいいし、データベースのスキーマはもう決まってるから、そのロジックをどう作っていくかっていうのを入れ替えるだけですよね。そこで使うサーバも変えられるし、いろいろ効率化してみようと工夫する。
吉羽 コードがきれいになってね。
片山 そうそう。なのでよさそうなサンプルがあれば、それを別の言語で作ってみるのはわりとやりやすいかも。要は結果がわかってて、そこに合わせればいいからモチベーションは湧きますよね。
吉羽 ある意味、日曜大工みたいなもんだよね。そういう意味では、エンジニアは作るのが好きっていうことが最低限必要な素養かもしれない。
片山 僕もやっぱり、なにか作るのがすごく楽しいので。目標があるとそれはそれでいいし。僕の場合はもともと製造業にいましたし、あんまりITにこだわってるわけじゃない。自転車も好きなので、自転車屋さんでもいいなって思ったし。なんだったら刀鍛冶もやりたいなって思ったりしますね。
あんまり小学校の時から変わってないですね。僕、小学校の時は仏具を磨くことばっかりやってたんですよ。仏具を磨くとピカピカになるじゃないですか。あれがすごい好きで、こういかにこうキレイに磨くかっていうところにすごいフォーカスしてたんですね。
編集部 実家がお寺だからではなく?
片山 いや、あの普通の家なんですけど、仏壇はあって。ろうそく立てや、チンて鳴らすやつがあるじゃないですか。ピカールっていう金属磨き用の液体があって、あの匂いがすごい好きなんですよ。そのピカールを使ってどうしたらキレイに磨けるかって、布を変えてみたり、磨き方を変えたりして、すごく集中してやってたんですね。その経験は大して役には立ってないんですけど。面白そうだなって思ったとこに、無駄だと思わずにフォーカスしてやってみるのは、今も変わらないところだと思いますね。
編集部 多分普通の人だと、もっといい方法がないかって試してみるまでいかず、ちょっとできたからもういいやってなる人が多いですよね。
片山 あとは、「ここから先は自分ではできない」なんて思わなくてもいいなって思います。例えば、僕がアプリケーションサーバを作っていたんですが、なんで作ろうかって思ったかというと、営業の人たちに、自分が当時開発していたWebアプリのデモをするために、アプリケーションサーバ込みで提供しなきゃいけなかったんですよ。アプリケーションサーバをインストールするとなると、ポートを開けたりなどで面倒くさかったので、なるべくシンプルなものが欲しかったんですよ。要はWebSphereに似たようなものを自分で作ればアプリが動くなと思ったんですよね。
普通の会社だと、そこから作ろうとはあまり思わないと思うんですけど、作っちゃえば、動くは動くし、例えばOSだって作ろうと思えば作ってしまえる。自分が使っているライブラリをブラックボックスだと思わないで、ソースコードを見てみたり、何となく触っちゃいけないと感じているものを触ってみたりする、という意識は持っててもいいんじゃないかな。
吉羽 境界線を取り払うような感じですね。
片山 いろいろ視野は広がるんと思いますね。
「新しいことをやって損した」なんて思わないでほしい
吉羽 片山さんがAWS入社時に、サービスが少なかったのでキャッチアップしやすいと感じたように、ソラコムも、サービス数が少ないうちに押さえておくのは良策ですよね。
片山 そうですね。今のところそんなに難しいのはないので。ちょっとずつ押さえて頂けるとありがたいです。新しいことをやって、それが仕事に結びつかないことを損したって思う人ってけっこういるみたいなんですね。それはすごいもったいないことで、知らないことにチャレンジしてそれが直接ビジネスに結びつかなくても、何らかの形で返ってくる可能性はすごくあります。
全然関係ないライブラリを見てて、これは使わないなと思ったけども、中に入ってるクラスが1個だけちょっと良かったので、それを真似て作ったとかって僕けっこうあるんですよ。だからそういう本筋じゃないものが自分の中のひらめきになるケースってのはあるので、食わず嫌いせずにいろいろ見るのはいいんじゃないかなとは思いますね。
吉羽 キャリアも一緒ですよね。
片山 そうですね。正解はないですけども。トライアンドエラーを繰り返すのは重要だと思います。
吉羽 片山さん、本日はありがとうございました。何か言い残したことはないですか? ギャグ言ってみたいだとか。
片山 ギャグですか? スベったことないですよ。
吉羽 そういうことにしときます(笑)。
