エンジニアリング界をリードする著名人が「いま話を聞きたい」開発者を直接指名し、日頃なかなか聞けない開発トピックについて語り尽くすオンライントークセッション「 DevLounge.jp 」。
Session B-3では、iOS、Swiftを専門領域として活躍するk_katsumiこと岸川克己氏が登壇。ゲストに招いたのは、その岸川氏がリスペクトして止まないという松田明氏です。松田氏はRubyおよびRuby on Railsのコミッターとして知られ、現在は様々な企業の技術顧問を務めていらっしゃいます。
エンジニアとしてどのようにレベルを上げていけばいいのか、どんな戦い方があるのか、そして自分にとって面白く、仕事に結び付けられるテクノロジーをどうやって見つけるかなど、専門領域を極めてきたお二人ならではの興味深い話題が続きました。その一部をダイジェストでお届けします。
k_katsumi(岸川 克己) 大学卒業後、SIerに入社しプログラミングを学ぶ。その後、国内外の企業でエンジニア、また技術アドバイザーとしてコミット。多数のオープンソースライブラリをGitHubで公開するほか、カンファレンスへの登壇など、iOS、Swiftに関するアウトプット活動にも取り組んでいる。2010年3月、株式会社ヤプリに入社。
松田 明 日本人として唯一、RubyおよびRuby on Rails両方のコミッターを務める。さらに、Haml、CarrierWave、SimpleCovのコミッターでもある。kaminari、action_args、active_decorator、database_rewinder、gem-srcなど数多くのOSS作品を手がける。「Asakusa.rb」の主催であり、「RubyKaigi」のチーフオーガナイザーとしても知られる。
僕らが持っている位置エネルギーをいかに活用し、提供できるか k_katsumi:10年くらいiOSアプリケーション、iOSやSwiftに関係するライブラリなどを書いています、ソフトウェアエンジニアの岸川です。今日は尊敬するソフトウェアエンジニアである松田明さんをお呼びしました。
松田:同じくソフトウェアエンジニア、プログラマーの松田です。自分はRubyやRuby on Railsといったオープンソースソフトウェアを趣味でさわっていまして、コミッターをやっています。仕事としては、それに絡んだ技術顧問業をいろいろな会社でやっています。
k_katsumi:松田さんは技術顧問業などをされていて、時間のない中でもすごく的確にプルリクエストにレビューを加えてくれるし、仕事ぶりがとにかくすごい。勝てる気がしないし、真似できないと常々思っている方です。どうやってそれを成し遂げているか、非常に興味があります。
松田:岸川さんと僕はお互いに全然フィールドが違うので、同じようなことをやっているようでいて全然交わっていない。お互いになにをやっているかよくわかっていないところがありますね。
k_katsumi:そうですね。同じ会社で仕事をしたこともあったけど、別のことをやっていましたから。ちょいちょい雑談をしに行ってはいましたが。
松田:それで僕が思うのは、岸川さんがやっているiOS周りと、僕がやっているRubyやRuby on Railsは、特徴がかなり違うんじゃないかということです。RubyやRuby on Railsはとにかくすべてがオープンな技術なので、あらゆる情報がインターネットに落ちている。言い方は悪いですけど、それを上手いこと拾って料理して出したら、一品それらしいものができちゃうんですよ。もちろん、そこのアンテナの張り方やレバレッジの効かせ方にはコツがあるのかもしれないですけど。
ところで、岸川さんはいま現場でプロダクトコードを書く仕事はされているんですか?
k_katsumi:プロダクトコードは書こうと思えば書けますが、いまはあまりやっていないですね。その下回りのオートメーションや、それを作るためのツールを作るような仕事が多いです。
松田:なるほど。これは伝わるかわからないんですが、エネルギーって位置エネルギーと運動エネルギーがあるじゃないですか。それでたぶん、僕らが持っているのは位置エネルギーなんですよ。
岸川さんの場合は、いままで10年間、iOSとずっと向き合ってきた中で積み重ねられたものがあって、それが価値になっていると思うんです。その価値を求めているお客さんがいて、お金が支払われている。その位置エネルギー的なものをどうお金に変換していくかという話だと思うんです。
逆に、僕の言う運動エネルギーというのは、コーダーとして「これだけ指が早く動きます」みたいなことです。でももう僕らの年齢だと、運動エネルギー的なスプリント勝負になったら若い人に負けるんですよね(笑)。
そこで一番価値が出せる立ち位置、パフォーマンスは、僕らが持っている位置エネルギーをいかに活用するか、提供できるかだと思うんです。だからフィールドは違っていても、岸川さんと僕は、実はやっていることは似ているのかなとも思っています。
k_katsumi:いや、松田さんはスプリントも全然できているように見えますけどね、私からすると(笑)。
松田:そこも実は、いままで培ってきた知識を、上手いこと形を変えて、引き出しから引っ張ってきているんですよ。最近はとくにそういうことが多くなってきています。
オープンな場が広がって情報の流通が盛んになれば、もっと高め合える k_katsumi:私の場合は「私しか解決できない問題を久々に解いた」みたいな自己満足を得ることもたまにあるんですが、それ以外の時間は大したことはしていないなと思うことがよくあります。
松田:自分で言ってはいけないのかもしれないけど、僕らは用心棒みたいな立ち位置なので、毎日走り回っていなくてもいいんじゃないでしょうか。でも、岸川さんが言う通り「日本中で自分しか解けない問題だろうな」みたいなことを感じることってありますね。
k_katsumi:それも思い上がりと言えば、思い上がりですよね。実際はそんなことはないですから。
松田:そう。そんな気がしているだけ(笑)。
k_katsumi:たまたま自分にとって面白い問題があったというだけで。
松田:僕はなにか「解ける問題」が見つかったときに、それを門外不出にしておくようなつもりもないんです。少なくともRubyやRuby on Railsはオープンな世界なので。
僕はやはり、物を書くとかしゃべるとか、カンファレンスとかコミュニティとか、なにかの形でなるべく知識を共有していく場をもっと作っていきたいんですよね。自分だけが情報を持っている状態をなるべくなくしたい。なので、そういった場を作る活動をライフワークと思って続けています。オープンな場が広がってもっと情報の流通が盛んになったほうが、もっとお互いを高め合えるし、楽しいと思っています。
k_katsumi:それは私も同じようなことを考えています。ソフトウェアエンジニアはみんなそうやって、いろいろな先人のやってきたことを吸収して、効率よく勉強させてもらっていまこうなっている。そういう実感がありますから。
松田:よく言われる「巨人の肩に我々は乗っている」というやつですね。
k_katsumi:私もできるだけ公開しようと思っています。そもそも、そのほうがいろいろと便利ですから。自分のためにもなるし、それによって仕事が増えることもありますし。そういうサイクルができるのはいいですよね。
松田:結局、自分だけが持っている技術を下手に溜め込んでも、1、2年したら腐ってしまいますもんね。あまり鍵をかけて保管しておいても、意味がない。フレッシュなうちに出してしまったほうが注目もしてもらえますし。出したら出した分だけ、というかそれ以上のなにかしらの形で返ってくることのほうが多い。
iOSの世界でも、OSSライブラリなどはそういうところがあるんじゃないですか。
k_katsumi:グローバルに通用するのはそっちだと思いますね。一方、日本で仕事をする場合だったら、前の会社でこんなキャリアを積みました、あとは本を読みました、カンファレンスを見ました、といったことのほうが多いのかなと思いますけど。日本の場合はコードがどうこうというよりは、それほど技術に詳しくない人でもわかる部分で引っ掛かって、評価される傾向はあると思います。
ソフトウェアエンジニアとして一点突破型のキャリアパスでも戦える 松田:僕が岸川さんに聞きたいのは、「この技術で一生食べていきますか?」ということです。僕らはいま、お互いに一点突破型のキャリアパスみたいなのを実践していますよね。
岸川さんの場合はある意味、Appleと一蓮托生というところもあるわけじゃないですか。そのことは怖くないですか?
k_katsumi:怖さは、いまは全然ないです。Appleはめちゃめちゃ強いという思いもありますし。10年前だったらちょっとわからなかったですが、たぶんいまのAppleに勝てる企業は、今後10年間くらいはなかなか出てこないと感じているんです。
松田:「Appleはスティーブ・ジョブズのワンマンですよ。ジョブズがいなくなったらわかんないですよ」って10年前なら言っていたけど、大丈夫でしたからね(笑)。
k_katsumi:そうなんです。ティム・クックのほうがもっとすごかった。ティム・クックのことは、それだけであと2時間は話せます。
AppleやiOSが今後どうなるかは置いておいたとしても、ソフトウェアエンジニアとしてどうにでもなるという感覚はあります。私はソフトウェア自体にはそれほど好き嫌いはないですし。ソフトウェアである限りはなんとかなるかなと。そんなに不安はないですね。
松田:若い人たちと話していてよく耳にするのが、「RubyとPythonのどっちが将来性がありますか」、「Rubyばっかりやっていて大丈夫ですか」、「Rustも勉強したほうがいいですか」といった疑問です。
僕が「RubyだけじゃなくPythonも勉強したほうがいいでしょうか」って聞かれたら、全然やるべきだとは思うんです。ただ、僕個人はほとんどRubyとRuby on Railsばかりをずっとやってきています。それは「なんとなくRubyのほうが楽しいからやってきたんだよね」という感覚でしかないんですよ。
k_katsumi:それはたぶん私も変わらないんじゃないのかな。そもそもいろいろな言語を勉強するのとひとつの言語をずっとやるのは、どちらもそれほど変わらない気がするんです。
受験勉強で言うと、いろいろな問題集をやるのと赤い色の本をひとつだけ何度もやるのと、どちらのやり方でも大学に合格できると思うんですよ。私はひとつの問題集をやるタイプで、実際に3つくらい見てみてこれがよさそうだと思った問題集を集中的に解いていったら、それで大学に合格できたんです。
松田:ゲームだとまんべんなくステータスを上げるんじゃなく、どれかのスキルに全振りするみたいなこと?
k_katsumi:ああ、そうですね。
松田:そのほうが結果的にレベルは上がりやすい、みたいな。そういう戦い方でもいいんですかね。
k_katsumi:いいんじゃないですか。具体的にジュニアの人に言うケースで考えると、ひとつのことをやるのが合っているんだったら、そういうスペシャリストを目指すほうがラクだと思うんですよね。「私はこれ、詳しいです」と言えるほうが物事は簡単に進むし。ゲームで言うとそのやり方に没頭できるタイプの人であれば、そっちのほうが楽しいだろうし。それで勝つ方法もあるというか。
ソフトウェアはまだまだ未知の可能性がすごく広がっている 松田:まあ僕らがしゃべっている以上、そういう結論にならざるを得ないですけどね。そういうレベルの上げ方もあるよ、ということですね。
ではもうひとつ、これだというテクノロジーにどうやって巡り合うか、という問題はどうですか。岸川さんはどんなきっかけでiOSをやり始めたんですか?
k_katsumi:私はもともとMacがずっと好きでしたから。iPhoneがまだアメリカでしか売っていないときに、たまたま出張でカリフォルニアに行って、アップルストアで1時間くらいずっとiPhoneを眺めていたんです。日本で出たら絶対買おうと思って。それで帰国したらiPhoneが出るまでのつなぎとして、iPod touchとWindows Mobile機を買って、いまでいうテザリングみたいなことをやっていました。電車に乗ってiPod touchで地図を見るようなことができたんです。
その後、iPhoneが発売されたら当然すぐに買ったし、デベロッパー登録も購入の半年前にやりました。そうしたら意外とApp Storeがトントン拍子に成功していった。iOSのアプリを書いていたらそこからちょいちょい仕事の依頼が来るようになって、という流れですね。当時私はテストツールのテクニカルサポートみたいな仕事をしていたんですけど、もしもApp Storeが成功しなかったとしても、同じような仕事をしながらiPhoneアプリを書いていたと思います。
松田:それはやっぱり、世界的にちょうどサービスが立ち上がった時期に立ち会えたから乗っかれた部分がありますよね。それはRailsもそうで、僕がRuby on Railsを使い始めたときはまだバージョン0.いくつの頃で、日本人は全然使い始めていなかった。それを仕事で使えるように耕していったところから、自分が参入できたっていうのがあります。だからさっき言った、位置エネルギーを得られたんだと思うんです。
となると、いまからこの業界に参入する人にも同じような巡り合わせがあるのか、若い人はそこが気になるんじゃないでしょうか。
k_katsumi:そこは全然大丈夫じゃないですかね。いまでもすごいOSSがあったり、面白いものが作られていたりしていて、エキサイティングなことはたくさん起きていると思うんです。iOSやSwiftの領域でも、3年前は全然知らなかったけどここ1年くらいですごく名前を聞くようになった人も、世界中にたくさんいます。
ソフトウェアはまだまだ未知の可能性がすごい広がっている。我々が知っているのはほんの狭い範囲だから。『HUNTER×HUNTER』で言うところの暗黒大陸がまだ残っている段階なんですよ。
松田:いい話だ! そうですよね。確かに、全然やり尽くされている感覚はないですね。おっしゃる通りです。勇気が出ました。
あと、僕が岸川さんから聞いて面白かったのは、技術顧問業の仕事をやっていると、「大学のノート」を回すようなことが喜ばれるという話です。
k_katsumi:技術顧問的な形で例えばA、B、C社に関わっていたとすると、A社から「これで困っているんです」と言われたら、「それはC社でもあった事例だから、こうやると解決しますよ」と伝えることができる、という話ですね。
実は情報を移動させているだけなんですけど、それで感謝される。とくにiOSは1年に1回大きなバージョンアップがあって、そのときに同じような問題が同時多発的に起こるんです。
松田:それはRuby on Railsでも完全に一緒ですね。
k_katsumi:だから、他社であった情報を持ってきて「こうやると直るよ」とか、「こういうことが起こると思うから気をつけてください」と伝えたら、それだけですごく感謝される、そういうことが多々あります。大学の試験勉強のときに、先輩からもらったノートを回してるだけで喜ばれるのと同じだと思うんです。
松田:面白いたとえですね。僕は大学のノートは回してもらっていただけで、自分が回した記憶はないですけど(笑)、すごくわかります。
k_katsumi:ソフトウェアの仕事は、なんやかやいろいろと浮き沈みがあって、私もなんのためにこれをやっているんだろうと思うこともあります。だけど、終わったらそれらは全部忘れて楽しかったと思える。いまはリモートワークでもやれるし、私の場合は時間も場所も関係なく自由に働けているのも気に入っていて、夢のある仕事だと思います。
一足飛びに成功することはないかもしれないけど、普通にコツコツとやっていれば成果が得られる、ソフトウェアエンジニアは楽しい仕事ですよね。
松田:本当にそうですね。面白いお話でした。今日は呼んでもらってありがとうございます。では最後に、本業の技術顧問の宣伝をしておきますが、「大学のノート」を貸してほしいお客様がいらっしゃったら、岸川さんともども、お気軽にお声かけください!
当日のアーカイブはYouTubeでも配信中。イベントレポートではお届けしきれなかった話が盛りだくさん。気になった方はチェックしてみてください。
次のセッションはこちら
前のセッションはこちら
イベント詳細はこちら