ヒト

グリーCTO藤本真樹さんに聞く! プログラミング言語の将来性と学習法

社会や市場、開発環境の変化により、プログラミング言語は進化を遂げてきました。現在も、大小さまざまなトピックやトレンドが起こっています。現役エンジニアはもちろん、これからエンジニアを目指す人にとっても、それら変化によって「これからどうなっていくのか」という未来の様子は気になるところでしょう。

そこで今回は、業界のオピニオンリーダーであるグリー株式会社CTOの藤本真樹さんに、プログラミング言語の将来性についてインタビュー。長年エンジニアとして活躍し続けてきた藤本さんの視点で、過去から現在までのトピックや実体験を元に、今後の変化予想を伺いました。これからプログラミング言語を学ぶ人に向けたスキルアップのヒントと共にお届けします。

藤本真樹さん
グリー株式会社 取締役 上級執行役員 最高技術責任者
2001年に上智大学文学部を卒業後、株式会社アストラザスタジオを経て、2003年1月有限会社テューンビズに入社。PHP等のオープンソースプロジェクトに参画しており、オープンソースソフトウェアシステムのコンサルティング等を担当。2005年6月、グリー株式会社 取締役に就任(現任)。

平成から令和へ プログラミング言語・開発の変化

――本日はよろしくお願いします。今回は、現場で様々な変化を見てきた藤本さんの視点で、プログラミング言語に関するお話を伺えればと思います。まずは直近10年の変化について、印象に残っているトピックスを教えてください。

藤本:ひとつ目のポイントとして、2010年前後は、現在広く使われるようになった言語がリリースされたタイミングだと思います。2009年にGo、2010年にRust、2011年にKotlin、2014年にSwiftなどが登場しました。

もう一つのトピックは、2009年のNode.jsのリリースに続いて、JavaScriptへトランスパイル (変換) されることを前提とした言語、DartやTypeScriptが2011年から2012年に登場しており、JavaScriptや拡張された言語の存在感が増したことが挙げられます。

そして、Pythonの台頭です。ウェブアプリケーション開発においてはRubyが主に利用されていたように思いますが、2010年代になってからは機械学習、AIを利用するアプリケーション開発がより身近になり、日本でもPythonが数多く使われるようになったと思います。
また、この10年間で着実に関数型言語の価値や必要性に対する意識が高まっていると感じています。関数型言語のパラダイム(考え方、捉え方など)をちゃんと理解して使うことが大切という認識が広まりました。

主要言語の登場とそれぞれの特色について

――主要言語が揃いながら、特定言語の台頭が出てきたと。それぞれのプログラミング言語に対する需要は、どのように変化したと感じていますか?

藤本:需要が上がった、下がったではなく、選択肢が広がったなと感じています。例えば、iOSならSwiftだし、Unity(ゲームエンジン)ならC#。サーバにしてもPython、Ruby、PHP、Node.jsなどがあるし、フロントエンドではJavaScriptやTypeScriptなどがあります。「この言語だからいい」のではなく、環境や言語の選択肢が広がっていっていると思います。

個別のプログラミング言語がどうこうよりも、開発する上で切っても切り離せないプログラミング言語を広く認識していくことが重要だと考えています。自分自身も年を重ねたことにより、様々な言語を適切に使っていけばいいという気持ちになりました。

――藤本さん自身は、開発に関して何か大きな変化はありましたか。

藤本:個人的には、VS Code(Visual Studio Code/マイクロソフトのコードエディタ)の登場は大きな変化でした。10年前までは「ターミナルでvimだ」みたいな気持ちだったのですが、今ではVS Codeでコードを書くことがほとんどです。

※ターミナル…Mac上で動くUNIX端末エミュレータ
※vim…UNIX系OS上で使えるテキストエディタ


あと、この10年で動的型付け言語よりも静的型付け言語を好む風潮になってきたと感じているのですが、個人的にも静的型付け言語を好むようになってきましたね。多分コンパイルが速くなったことと、当時LL(Lightweight Language/軽量プログラミング言語)と呼ばれていた言語の開発と同じくらい、環境も含めて敷居が低く、言語が書けるようになったことが背景にあるのではないでしょうか。当然のことではありますが、書く環境も動く環境もとても進化したと思いますね。

プログラミング言語の未来とは

――過去から現在までの変化を追ってきましたが、未来のお話も伺えればと思います。藤本さんが今後注目している言語はありますか?

藤本:自分でしっかりと使ってみたいなと思っているのは、自分の周りでも注目度が高いRustですね。ちゃんと一定以上の規模のものを作ってみたいと思っています。

ミスなく言語を書くことは人間にはできないということは、わかっています。それをどう上手にサポートするかという点において、一段進んだアプローチを行っているのがRustではないかと思っています。また、書き方のパラダイムに関しても、10年くらい前の「とりあえずオブジェクト指向」というところとは、ちょっと違うアプローチをしてるんですよね。純粋関数型ではないけど、そういったアプローチも可能なので、「使ってみよう」という流れになっているのだと思います。

また、質が高い言語が出てきた背景にLLVM(Low Level Virtual Machine/様々な言語に対応できるコンパイラ基盤)の存在が大きいと感じています。だからこそ、時間があればLLVMを使って自分で言語を作ってみたいなー、などと思いますが、なかなかそんな暇はなさそうです(笑)。

――主要言語について、今後どのような変化がおこると考えていますか。

藤本:プログラミング言語の寿命って、なんとなく思っているよりもずっと長いものなので、いきなり何かプログラミング言語がなくなるといったことは、起きないと思っているんですよね。例えば、iOSでもSwiftが登場したからといって、Objective-Cが動かなくなったというわけではありません。だから、焦らず得意な言語、好きな言語を学んでいくことが大事なのだと考えます。

――トレンドや変化に影響されすぎず、得意・好きな言語に向き合っていくことが大切なのですね。

藤本:今後もプログラミング言語は発達していくと思うので、そのために計算機(コンピューター)に上手に頼っていくことでしょうか。「自分が楽をして、計算機の力を使う」ところに頭を使い続ける。そのために、今必要な言語を勉強したり、パラダイムを勉強したりする、という意識が大事になってくるのではないでしょうか。機械に任せられるところは任せて、人間でしか考えられないことに頭を使えるようにしていく方が、その後もモノを作りやすいのではないかと思います。

――最近はローコードやノーコード開発も増えてきました。これらが広がることで、エンジニアの働き方も変わってくるのでしょうか。

藤本:まず、長年エンジニアの数が足りないと言われ続けてきたので、ローコードやノーコードが広がっただけで開発者の仕事はなくなることはないと思います。それ以上にエンジニアの需要は増えていますから。

逆にこれらが増えてくることで、エンジニアとしてこれまで出来なかったこと、やりたいことができるようになる。エンジニアとしてやるべきことはたくさんあって、ローコードやノーコードがその一部をサポートしてくれる存在だと思っています。

プログラミング言語の選択と学習法

――ここからは、プログラミング言語の学習について聞かせてください。まず、数多くある言語の中から、選択するポイントについて教えてください。

藤本:それぞれの言語でよく使われる分野やプラットフォーム、利用用途があると思います。それを認識した上で、適したものを選ぶことが重要だと思います。

例えば、Kotlinはサーバーサイドで動きますし、Swiftもサーバーサイドで、というのもできなくはないです。でも、メジャーな使い方に則って選んだ方が、学習するときに楽です。「この言語はこの使い方だけ」と縛られてしまうのはナンセンスですが、適しているものを理解して学習していくことが大事だと思います。

――ウェブ開発、アプリ開発など、シチュエーション別でおすすめの言語があれば教えてください。

藤本:ウェブ開発は、バックエンド/フロントエンドで分かれると思いますが、両方やっておいた方がいいと思います。フロントエンドでは、Svelte、React、Vue.jsなどが多いのではないでしょうか。サーバーサイドでは、PythonかRubyなど。周りで使っている人が多い言語を選択すると、わからないときにも聞きやすいのでつまずきにくいと思います。

セキュリティについては、C++やアセンブラが計算機により近くなるけど、ハードルも高いですよね。機械学習についてはライブラリと事例が多いPythonでしょうか。

――初めてプログラミング言語を習得する人は、どのように進めていけばいいでしょうか。

藤本:まず「動いた」というインパクトを持つことが大切なので、大きいものを作ろうとしないこと。

自分でなんとなく書けるようになった、という方は次の段階で、人が書いたソースコードを読む機会は絶対持った方がいいと思いますし、本を読んだり、言語のレファレンスを読んだりすることも重要です。自分が使っているフレームワークやよく使われているライブラリなどのソースコードを読んで、「この言語のベストプラクティス(最善の事例)はこれ」というのを理解して、知識の幅を広げると良いと思います。

――すでにプログラミング言語を学んだことがある人に対しての、新たな言語を選ぶときのコツはありますか。

藤本:既に習得している言語に縛られすぎないように、上手にアンラーニング(学んだことを意識的に忘れること)をすることが大切ですね。

また、言語に対してちゃんとリスペクトすること。人間誰しも便利な方には気づかず、不便な点にこそ注目してしまいがちです。だからこそ「この言語にあるコレは何?」とネガティブに思わず、言語をリスペクトして取り組んでいきましょう。

加えて、たとえばPythonにしてもRubyにしても、作りたいと思ったものに対して、だいたい既に良いライブラリがあるものです。そういったライブラリパッケージや、プラットフォームが提供しているAPIを理解する・上手に使うことも重要です。もちろん、学習する上でイチから同じものを作るというのも有効ですが、すでにあるものを上手に使った方がより効率的に作ることができます。

――情報のアンラーニング、言語へのリスペクト、ライブラリの活用など、経験者なりの柔軟な意識が必要なのですね。

藤本:はい。それに、新たなプログラミング言語を仕事の幅を広げるために学ぶのであれば、例えばクライアント側の開発をしているのなら、サーバ側へ行ってみるとか、プラットフォームとしても違うものを選ぶことで、幅が広がるのではないでしょうか。その際、ユースケースにまつわる周辺の知識もきちんと持つこと、そしてそれらを上手に使うことが大切になってきます。

自分にとってのプログラミングの楽しみを理解する

――プログラミング言語を学ぶ際に、どんなことを意識すると良いのでしょうか。

藤本:イヤイヤやってもしょうがないので、楽しいことが大事だと思います。コレ作ってみよう、コレ新しい言語でたから使ってみようという感じで、合わなければ無理して使う必要性もありませんしね。

――“楽しむ”ことは、簡単なようで難しいようにも思います。仕事としてやっているとツラいと感じることもあったり……。

藤本:楽しいと感じるためにも、まず「自分自身がどういうことを楽しめるのか」理解しておくことも大切ですね。

私は自分の会社で面接をするとき、「プログラミングをしているとき、どんなところに楽しさを感じますか」というのをよく聞きます。「キーボードを打つのが楽しい」「面倒くさい仕事が一瞬で出来るようになったのがうれしい」など、人によって理由は様々です。

この仕事は、「つまらない仕事」と感じたら自分でコードを書いて楽にすることができます。自分が何が楽しいのか理解しておくことで、つまらない環境を楽しくできる点こそ、プログラミングの魅力だと思っています。

――藤本さん自身は、その“楽しむ”ことは変わっていないですか。

藤本:ソフトウェアを書くことは変わらずに、楽しいですよ。もちろん、CTOとしてさまざまな開発に関わっているなかで大変なことはあります。何も気にせずに好きなものをつくっていければどんなに楽しいことかと。

でも、人間は“ずっと楽しい”ことが続くと、“楽しくなくなる”と思うんです。大変なことやうまくいかないことがあるからこそ、楽しさが感じられる。そんなことを思いながら、エンジニアを続けています。

―― 最後に、これからプログラミングを学ぼうと考えている人、更なるスキルアップを目指すエンジニアへメッセージをお願いします。

藤本:プログラミングの敷居は、以前に比べて下がっていると思うんですよね。「エンジニア」という肩書きがなくても、「ちょっとしたツール作ってます」とか「ゲーム作ってみました」という人は数多くいます。何か作って動くと楽しいと感じる人は、プロのエンジニアへ転職する前に、そういった気軽にできるものからチャレンジしてみるのがいいのではないでしょうか。楽しければ、より沼へと入って頂ければ(笑)。

プロフェッショナルなソフトウェアエンジニアとして生きていくには、気軽に作って楽しんでいる人たちよりも、何か優れていないとお金をもらう価値が出せません。趣味で作る人たちにはできないけど自分にはできることを、ちょっとずつ増やしていくことが求められるでしょう。自分が興味を持ったことに対して、より深く詳しくなっていくことで価値がでてくるのではないでしょうか。


取材+文:ミノシマ タカコ
編集:LIG

この記事が気に入ったらいいね!しよう

いいね!するとi:Engineerの最新情報をお届けします

プライバシーマーク