いま学ぶべき第二のプログラミング言語はコレだ! 未来のために挑戦したい9つの言語とその理由

業務に必要なだけではなく、コンピュータによって問題解決できていない分野を切り開き、エンジニアとして戦っていくため、刺激的な第二プログラミング言語に挑戦しましょう。Rust、Go、Erlang、Elixir、Clojure、Scheme、OCaml、Haskell、Scalaを紹介します。

いま学ぶべき第二のプログラミング言語はコレだ! 未来のために挑戦したい9つの言語とその理由

みなさんが使えるプログラミング言語はいくつあるでしょうか?

ひとくちに「使える」といっても、ひととおりのチュートリアルは終えたという段階もあれば、言語仕様(あれば)やライブラリを知り尽くしていて、思いついた処理を即座にコード化できるという段階もあります。リファレンスとか参考書を見ながらであれば使える、ということも多いでしょう。

ベテランエンジニアなら、いろいろな仕事に携わっているうちに、さまざまな環境でそれぞれ必要とされる言語をリファレンス片手に使ってきたことでしょう。エンジニアとして働き始めたばかりでも、今まさに業務で書いている言語であれば、胸を張って「使える!」と言えそうです。

世の中には無数のプログラミング言語があり、その数はさらに増え続けています。

シンタックスを覚えているプログラミング言語の数でエンジニアの力量を測るのはナンセンスですが、複数のプログラミング言語を勉強することには、少なからず意味があるでしょう。すでに知っている言語であっても、いままで使ったことがない新しいライブラリやフレームワークに手を伸ばすだけで、見えてくる景色はだいぶ違ってくるはずです。

エンジニアHubでは、これから数回にかけて、IT系エンジニアとして仕事で使っているプログラミング言語ではない言語、つまり第二言語を学ぼうというシリーズ記事を掲載していきます。今回はその第0回として、第二のプログラミング言語を学ぶ意味と、これから学ぶならどんな言語がいいかを考えてみます。

この記事では、いろいろな言語の名前と一行ほどの特徴を紹介していきます。「○○言語の特徴がこの記事だけでは不十分だ。○○言語を学ぶべき理由はもっとたくさんある!」という方がいらっしゃいましたら、これから新しく勉強してみたい人向けに、○○言語のアピールポイントや最適な学習素材などをブログなどで紹介してみてください。

なぜ第二言語を学ぶの?

仕事で使うプログラミング言語が決まっている方も多いでしょう。その言語をとことん突き詰めるのもいいかもしれませんが、ここでは複数のプログラミング言語を学ぶ理由を考えてみましょう。

楽しいから!

第二のプログラミング言語を学ぶ理由として、まっさきに挙げたいのは、「楽しいから」です!

自分が知らない世界へ足を踏み出すときのわくわく感、知識欲が満たされるときのじっとしていられない感覚。海外旅行に行くような気分で、何でもいいから第二のプログラミング言語に挑戦してみるというのは、すでに何らかの言語でプログラムを書いたことがあるエンジニアだけに許された贅沢だといえるでしょう。

作りたいアプリケーション、やりたい仕事に必要だから

作ろうとするアプリケーションによっては、第二言語や新しいフレームワークの勉強が必須になります。

自分がいま使える言語がVB .NETだけだったとして、macOSで動作するアプリケーションを書く必要があるなら、SwiftやObjective-Cを学ぶしかないでしょう。逆に、Apple製品向けのアプリを書いている人が、Windows向けアプリを書く必要があるときはC#やVB .NETを、Android向けアプリを書く必要があるならJavaやKotlinを学ぶことになります。

必須ではないけれど、自分がいま知っている言語でがんばるよりも新しい言語を覚えてしまったほうが楽、ということも少なくありません。たとえば、いま使える言語がRubyだけだったとして、機械学習に手をつけたいと思ったなら、RubyでがんばるよりPythonを学ぶほうが近道のはずです。

JavaScriptでWebアプリを書けるけど、Unityで作りたいものがあるから、この機会にC#を勉強してみよう、といったケースもありでしょう。

やりたいことがあるから学ぶ第二言語の例
Swift
https://developer.apple.com/swift/
iOSとmacOS用アプリ開発のためにApple社が作った言語。
C#
https://docs.microsoft.com/ja-jp/dotnet/articles/csharp/index
もともとはMicrosoftが.NET Frameworkに合わせて開発した言語。現在では他の実装もあり、Unityのスクリプトエンジンとして使われたり、Xamarinプラットフォーム上でiOSやAndroidのアプリ開発にも使える。
Kotlin
http://kotlinlang.org/
ジェットブレインズ社が開発した、JVM上で動く汎用の言語。最近はAndroidアプリの開発用言語として人気で、Google I/O 2017で公式な開発言語に採用された。
Python
https://www.python.org/
世界中でさまざまな用途に使われる汎用の言語だが、最近は機械学習を学ぶための言語として注目されている。

キャリアのための生存戦略として第二言語を選ぶ

第二のプログラミング言語を学ぶことには、楽しみとしてだけでなく、実用的な利点もあります。

プログラミング言語まわりでは、「いま○○が熱い」「これからは○○だ」という話がとにかく絶えません。まったく新しいプログラミング言語は次々に生まれていますし、言語としては同じでもバージョンが変わって昨日まで使っていた構文が廃止されたり、新しいフレームワークやライブラリが登場したり、聞いたこともないような概念が提唱されて実装されたりします。

どのプログラミング言語を習得しているか、どんなフレームワークの経験があるかによって、エンジニアとしてのキャリアが左右されるように感じることもあるでしょう。いま自分が使える言語やフレームワークだけで、生涯にわたって仕事が続けられるとは限らないのが現実です。

この先も同じ道具一本で続けられるとは限らないなら、注目されていて需要も多いプログラミング言語やフレームワークに挑戦していく。自分が次に学ぶプログラミング言語をこの方向で考えるなら、これから需要が増えそうな言語を学ぼうといえるかもしれません。

これから需要が高まるプログラミング言語を予測するのは簡単ではありませんが、たとえば次のような「世界的に人気のあるプログラミング言語」を表すランキングが参考になります。

転職に有利な第二言語が見つかるかもしれないランキング
TIOBE Index
https://www.tiobe.com/tiobe-index/
さまざまな検索エンジンでよく検索された言語のランキング。
みんながいま知りたい言語のランキングともいえるが、「○○ language」のようなキーワードで検索された回数なので、「英語圏の人がlanguageを付けないで検索しても困らない言語」は目立ちにくい傾向がある(ScalaやErlang、Haskellなど)
RedMonk Programming Language Rankings
http://redmonk.com/sogrady/2017/03/17/language-rankings-1-17/
GitHubのプルリクエストの件数と、Stack Overflowのタグの数を、二次元にプロットしたもの。
もともとはGitHubのプロジェクト数とStack Overflowのタグ数の相関を求める目的だったが、現在では各言語の人気度をコードとコミュニケーションの両面で表したランキングとして、年に二回発表されている。

もっとあからさまな指標として、転職サイトの募集要項で求められている数が多い言語や、募集給与が高い言語を調べるという方法もあります。各求人サイトで人気言語のランキングが発表されていたりするので、興味がある方は「転職 言語 人気」のようなキーワードで検索してみてください。

第二言語を学ぶ本当の意味

ここまで、第二言語を学ぶのは楽しくキャリアにも役立つからという、わりと当たり障りのない話を書いてきました。でもこれって、第二言語に限らず、何か新しいことを学ぼうというときには必ずといっていいほど当てはまる話ですよね。

勉強は、すぐに結果を出す必要がなければ楽しいし、それが生き残りをかけた勉強であるなら、楽しいとか楽しくないとか関係なくやるしかありません。

1

そこでこの記事では、第二のプログラミング言語を学ぶという点に話を絞って、もうちょっと別の考え方を提案してみたいと思います。それは、

目先の仕事や近い将来の転職に直接役立つかどうかはなんとも言えないけれど、いまの自分には思いもよらない課題に対してもコンピュータを使って問題解決ができるように、第二言語、第三言語に手を出してみよう

というアプローチです。

現在の業務や、近い将来の転職に直接役立ちそうなプログラミング言語やフレームワークを勉強することは、すでにコンピュータで解決できる課題であることが判明している問題への対応です。

しかし、コンピュータを活用したエンジニアリングが切実に求められていて、それゆえにエンジニアの市場価値がこれから高くなる可能性を秘めているのは、まだコンピュータによる問題解決に手がつけられていない分野、それどころか、まだコンピュータを活用して解決できる問題として認識されていない分野かもしれません。

そのような分野を切り開いていくツールとして未知のプログラミング言語に手を伸ばしてみるのは、よりいっそう刺激的な挑戦といえるのではないでしょうか? しかも、そうやって学んだ刺激的な第二言語は、いつもの業務で思わぬ効果を上げる可能性もあるはずです。

ハンマーしか持っていなかったら、なんでも釘に見える」という戒めがありますが、第二言語を学ぶことは、まさにハンマー以外の道具を持つことだといえます。

ただし、これは、新しくて便利なツールを道具箱に増やしていこうという意味ではありません。新しい道具を手にする最大の利点は、それまで見えていなかった課題に気づけることです。ハンマーにしても、それまでハンマーを持っていなければ、そもそも釘が見えていない可能性があります。

ハンマーを手にしたことで、「いままで釘だと思わなかったものが実は釘であったことに気づく」ことだってありえるのです。求人が多いわけでもないプログラミング言語をわざわざ学ぶことは、この意味で新しいツールを手にすることかもしれません。

ポインタと再帰を意識できる言語を学べ(by Joel Spolsky)

というわけで、ここからは、短期的なキャリアアップにつながるとは断言できないけれど強力なツールとして学ぶべき第二言語について、少し思いを馳せてみましょう。

具体的な言語について考える前に、学ぶべきプログラミング言語を見極めるときのヒントになりそうな記事を1つ紹介します。かつてMicrosoftでExcel VBAの開発に携わり、現在ではStack OverflowのCEOでもあるJoel Spolsky(ジョエル・スポルスキー)氏が、いまから10年以上前の2005年末に公開した「Javaスクールの危険」という記事です。

ものすごくざっくり要約すると、「Javaだけを学んだプログラマーは、優れたプログラマーかどうかわからない」というのが、この記事におけるJoel氏の主張です(短い記事なので、ぜひ全文を読んでください)

Joel氏は、その主張の根拠として、記事中で次のように言っています。

ポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。

Joel氏は、言語によってはポインタや再帰を意識せずにプログラミングできることがウリになっていて、Javaがまさにそのような言語だと言います。実際、仕事でプログラムを書くツールとして考えれば、ポインタや再帰の意味を理解しなくても使える言語のほうが、間違いなく実用的な言語でしょう。

しかし、ソフトウェア開発についての教育という観点では、ポインタと再帰を意識しなくても済むプログラミング言語は不適切であり、まるでスプーンでご飯を食べさせてあげるようなものであるとJoel氏は言います。彼の見解に従うなら、学ぶべきプログラミング言語とは、ポインタや再帰を意識せざるをえない言語ということになりそうです。

プログラマーとして闘うために必要な力をつける言語を学ぼう

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