ギーク直伝の技術習得メソッド!トレタ増井雄一郎の考える、効率のよい言語選択のワザ

最初に学ぶべき言語は? 新たな技術の習得フローは? 若手エンジニアの成長戦略にまつわるメソッドを日本を代表するギーク、トレタのCTO増井さんに聞いてみました。

ギーク直伝の技術習得メソッド!トレタ増井雄一郎の考える、効率のよい言語選択のワザ

自身の技術力を向上させるために、皆さんはどのような羅針盤を持っていますか? 情報や選択肢が無数に存在するなかで、「自分にとってのベストな成長戦略」を採用するのは、なかなかに難しい作業です。ならば、人に聞いてみましょう。それも、未開の領域を切り拓いてきた、トップエンジニアに。

今回、若手エンジニアに向けて技術習得にまつわるメソッドを教えてくれたのは、株式会社トレタのCTOであり数多くの講演・執筆活動も行っている増井雄一郎(ますい・ゆういちろう/@masuidriveさん。増井さんがここまで培った技術・知識を一挙に棚卸ししていただくと同時に、その中から若手に伝えたいエッセンスを抽出してもらいました。

日本を代表するギークの一人として知られる増井さんが、これまでのプロセスから得られた珠玉のメソッドをご覧あれ!

【大原則】価値観の根底にあるオープンソースの思想

まず解説しておきたいのは、僕のエンジニアとしてのキャリアを振り返ったとき、最も影響を受けたのが「オープンソースの思想」であることです。

僕がちょうど大学生の頃、エリック・レイモンドという方が『伽藍とバザール』という本を著したのですが、それを読んで当時大きな衝撃を受けました。


伽藍とバザール
著:エリック・レイモンド/訳:山形浩生/刊:USP研究所


このエッセイでは、Linuxのようなみんなで寄ってたかって開発するというオープンソースプロジェクトの仕組みを分析して、著者が実際にオープンソースプロジェクトを始める話が書かれていました。

僕は中学時代にコンピュータと出会ったので、その本を読む以前にもプログラミングは大好きでした。でも、オープンソースを活用して、1人ではなく大勢の人が力を合わせてプロダクトをつくるために何をすべきなのか。志を同じくする人たちとの関わりをどう増やすべきなのか、という方法論は、『伽藍とバザール』を読んでから強く意識するようになりました。

1

エリック・レイモンド氏が創設(共同)し、過去、代表を務めたオープンソース推進団体Open Source Initiative(OSI)。オープンソースの定義化と、オープンソースライセンスの認定活動などを行い、OSという概念の普及に尽力した。 画像出典:Open Source Initiative

過去、フリーランスのエンジニアとして仕事をしていた自分にとって、『伽藍とバザール』から学んだ要素は、当時僕が開発にコミットした「PukiWiki」というサービスに集約されています。

2

PukiWikiとはPHPで動作するウィキエンジンの一種だ。画像出典:PukiWiki

「PukiWiki」は、もちろんこうしたサービスを作ってみたかったという思いもありましたが、モチベーションがもうひとつありました。それは『伽藍とバザール』に記されているOSSという概念やチームで作り上げるという考え方、手法を自分の手で実行してみたかった、という思いです。

ここで培ったオープンソースの思想が、僕のエンジニアとしての全ての活動の根底に流れていますし、アイデアの源泉だと思います。

【学習メソッド1】最初に学ぶべきは、質問できる人が近くにいる言語

それを前提として、「若手エンジニアの方は最初にどんなプログラミング言語を学ぶべきか」について話をしたいと思います。いろいろな方からこの質問をされることが多いのですが、僕の答えは明確に決まっています。「質問できるエンジニアが近くにいる言語」です。

各プログラミング言語は、異なる特徴を持っています。でも、どんな言語でも一定以上のスキルまで到達すれば、同じようなことが実現できます。選択した言語による優位性って実はほとんどありません。Javaであろうと、アセンブラであろうと、Rubyであろうと、変わらない。

それよりも重要なのは、何か困ったことや理解できない内容があったとき、相談できる人が近くにいることです。プログラミングって、自分で数日間調べても全くわからなかった内容が、誰かに質問すれば数分でわかるなんてことがよくあります。だから、いつでも質問できる環境があることが何より大事なんです。

3

それは、優秀なプログラマが物理的に自分の近くにいる、という意味合いでもそうですし、プログラミング言語のコミュニティが活発でオンライン上ですぐ質問できる、という意味合いでもそうです。2017年現在で言えば、PythonやRuby、JavaScriptなどの言語はすごく良質なコミュニティが育っていると思います。だから、最初に習得するならばそれらの言語は非常におすすめですね。

僕の1番好きな言語ってRubyなんですけど、それは言語そのものの仕様が好きというだけではなくコミュニティも好き、というのが大きいんです。だから、習得したい言語やフレームワークの選定時には、「どんなコミュニティが存在しているのか」「そのコミュニティはどういった思想を持っているのか」を理解しておくといいと思います。

日本Rubyの会のwikiには全国各地のRubyコミュニティがずらりと並ぶ。

個人的な意見を言うと、言語固有のコミュニティが持つ思想は明確であれば明確であるほどいいと思っています。思想がはっきりしていれば、エンジニアから見た場合に「好きか」「嫌いか」も判断しやすくなりますから。人間って自分の好みがモチベーションに大きく影響するので、言語選定においても好き嫌いという要素はとても大きいのです。

ちなみに言語開発者の思想を学ぶという意味だと、僕は37signalsという企業のエンジニアが執筆した本である『Getting Real』にも大きな影響を受けています。

『Getting Real』は37signalsのオフィシャルサイトから無料でDL(英語版)可能だ。日本のエンジニアコミュニティでの評価も非常に高い1冊でもある。

これは、Ruby on Railsの開発メンバーが、どんなことを考え、なぜ会社を運営し、そして、なぜRuby on Railsを作ったのかが解説されている書籍。これを読んで、その根底にある思想に大きな感銘を受けたのも、僕がRubyを好きな理由のひとつです。

4

社内勉強会でOSの仕組みについて解説する増井さん。さまざまな場で、彼は自身のノウハウを積極的に共有する。

【学習メソッド2】新技術の習得からコミュニティ参画まで

それに関連して、僕が新しい言語を習得して、そのコミュニティに加わるまでの具体的なプロセスを示しておきたいと思います。

5

僕が何か新しい言語やフレームワークを学ぶ場合には、「何かを作りたい」という明確な動機があるケースが多いです。例えば、React.jsを使い始めたきっかけも、いくつか作りたいJavaScriptのツールがあってフレームワークを探していたときに偶然出会って、でした。

言語やフレームワークを見つけた後は、まずチュートリアルなどで実際に手を動かします。まずは「使えるか、使えないか」という視点で見るわけです。

サンプルコードを書いてみて「これは面白い」と思ったら、その開発者のブログやGitHub上にあるIssuesの履歴などをチェックします。それから、何かのイベントで登壇しているなら、そのレポート記事にも目を通します。そうすることで、開発者の持つ思想がぼんやりと見えてくるんです。

そうしたプロセスを経て、開発者やコミュニティの思想に賛同できれば、そのコミュニティに加わる、というケースが多いですね。

自分がもし新人エンジニアなら、この領域に手を付ける

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く