さて、今日はちょっとGASやpythonでもなければ、管理部関係の話でもなく、プログラミングを始める際の言語選択について、個人的に思っていることを書いていきたいなと思います。
この記事を読んで、以下のことをなんとなくでも掴んでもらえると嬉しいです。
あくまで個人的な目線であり、この領域に絶対の正解はないので、参考意見の一つとしてみてもらえればと思いますし、キャリア形成(副業・キャリアチェンジ含む)は別途どっかで個人的な思いを書きたいなと思ってるテーマなので、そこには今回は軽く触れるだけになります。
では、本編いきます。
なぜ学習するか?から考えるべき
端的に言ってしまえば、”どの言語を学習するべきか”という問いは、その裏に、プログラミングを学習して何が実現したいのか・なぜ学習するのか、という本来の目的が隠れていると思っており、その目的に応じた言語を選択すべきです。
学習目的の分類
では、学習する目的はどんなものがあるでしょうか?ノンプロ視点でみていきます。
目的分類 | 選択の際の考え方 |
---|---|
1: 業務への貢献(現業目的) | 自社で使用が許可されている、そして業務改善したい内容にフィットした言語を選ぶべきです。 GASでもいいですし、それこそ会社が許すのであれば、NoCode系ももちろん選択肢です。 また、そもそもプログラミング以外のSaaS系ツールの習得でも価値がある可能性もあります。 |
2: 副業(ノンプロとして) | 副業マーケットで引き合いのある言語を選ぶことになります。 国内であれば、WP案件が多い気がしますので、PHPとかでしょうか。 そもそもこの領域を目的とした場合、1の目的の延長線上でやることになると思うので、1の言語選択と同等かもしれません。 言語選択よりも、マーケティングとかSNS運用のような認知の高め方や発信方法の習得の方が先に来た方がいいですかね。 |
3: キャリアチェンジ(ノンプロ→ノンプロ) | 1と同様ですが、変更先のキャリアで生かせる言語が基本になります。 |
4: キャリアチェンジ(ノンプロ→国内プロ) | 現在の国内マーケットで案件数の多い言語(RubyとかJavaとか)になります。 もちろんフロントエンドにいきたい場合や、devopsにいきたいという具体的な希望があれば、当然そのカテゴリの言語やフレームワーク群を学習することになります。 |
5: キャリアチェンジ(ノンプロ→海外プロ) | 海外、特にGAFAとかが採用している言語がマーケットトレンドを醸成していくので、GoやPythonでしょうか。 もちろんアメリカ(CV地区以外)では別のトレンドがあるかもしれませんが、大きくはメジャープレーヤーが採用している言語が中期で外れにくいです。 ここら辺は、Linkedinや働きたい海外の採用サイト等で定期的に検索しながら、探していくのがいいと思います。 |
要は、自分が何の目的でプログラミング言語を学習したいのか、そして学習した結果どうなりたいのか、に応じて学習対象は異なってきます。
そして、自分がという視点とともに重要なのが、どんな仕事も発注する側がおり、発注する側が何が欲しいのか、つまりマーケットニーズが何があるのかの把握が必要です。
さらに、バックエンドやフロントエンドのプログラマー、インフラエンジニアなど純粋なエンジニアにキャリアチェンジを模索する場合、それが将来的な本業になることを意味しますので、どの言語がトレンドとしてマーケットで強いのかをウォッチすることが必要です。
今回は、細かいキャリア選択までは書いていく気がないので、ざっとでまとめてます。
余談:日本で評価される言語と海外で評価される言語
基本的に大規模システムは双方Javaが利用されるケースが多いかなぁと思いますが、それ以外の言語については違いがあるような気がします。
日本では、Rubyが強いです。これはRubyの開発者であるマツモト氏が日本人であり、関連ドキュメントも日本語で整備されていて、日本人に向いているから。RoRにも採用されて、グローバルでも強くなるかと一時期期待されましたが、やはりGAFAMとかが自社言語に採用してくれていないので、だんだんグローバルでは勢いが落ちてきている(落ち着いてきている)感じです。
他方で、海外案件みていると、pythonやGolangが強くなっているイメージです。これはGoogleがpythonやGolangを採用しているからと言われています。
当然の事ながら、マーケットニーズが強い言語と言っても、場所やカテゴリによって違ってくるので、どこで何をしたいかによりけりでしょう。
日本で管理部門にいるノンプロなら何から手をつけるべきか?
たまに上記のような質問を見受けますが、正直何をしたいかによりけりですよね、と思います。
個人的な推しは、自動化系ならGAS・Python・VBA(私は苦手だから使う環境を作らないです)、副業案件頑張りたいならHTML・PHP(WordPress)・Python・DB系(MySqlでいいと思います)でしょうか。GASとpythonの勉強方法については、以下の記事で紹介しています。
それこそ、プログラミング言語以外の、SaaSツールの使い方を習得しておくことでも、価値は高まると思います。副業案件みてると、会計だとFreeeやMFの設計や外部ツールとの連携なんて感じの案件もあります。Kintone系も多いですよね。
連携関係ならZapierとかAnyflowなんかのiPaaS関係も存在します。NoCode群も増えてきてます。
内部エンジニアがAPIでデータ提供してくれるなら、GCP cloud functionsやAmazon lamdaなどのFaaSもいいと思います。こんな感じのことができます。
いろいろ出てきますよね、なぜでしょう?結局はどんな前提条件にいるのか・何をしたいのか、という縛りが全くないため、方面が広がるんです。
会話の言語であれば、いきたい国や働きたい環境で使われている言語を選びますよね?プログラミング言語も同じように、何がしたいかによる、そしてそもそもプログラミングで解決しないという選択肢も十分あると思ってます。
会話の言語も翻訳機で解決すればいいって考えかたもあるじゃないですか?同じイメージです。
まとめ
今回は、”【どの言語を学習するべきか】はノンプロにおいてどこまで重要なのか?”というテーマで書いてきました。
個人的な結論は、どんな目的で学習するかによりけりだし、プロになるのでなければ、プログラミング言語も使用する技術も自分の環境やキャリアパスにフィットしたものを選ぶのが肝であり、どの言語を選択するのかという命題は目的に応じるので、そもそもの目的を再度言語化してみることをお勧めします。
その上で、自分にフィットする言語を選ぶことが大事であり、そもそも言語を選ばない(プログラミングで解決しない)という選択肢すらあると思っています。