プログラミング言語はWindows系とLinux系どちらを学ぶべき?

2016年11月21日に投稿 → に更新

タイトルを見て、ほとんどの人は「Linux系のがいいに決まってんじゃん!」と思われたかもしれません。

「Windowsの仕事よりもLinux系の仕事の方が多い」
「Linux系の技術のほうがオープンだし広く使われている」

などの理由によるものだと思います。

確かに仕事ではLinux系の技術を使うほうが多いと思います(会社にもよりますが)。

とはいえ、ここ数年、マイクロソフトの技術の利用範囲が広がってきていて、状況が変わってきています。自分の仕事体験を踏まえて詳しく紹介します。

ここ20年位のプログラミング言語の変遷

私がプログラミングを始めたのは1998年に情報処理の専門学校に入学してからです。

当時の授業はマイクロソフトのプログラミング言語である

  • Visual C++
  • Visual Basic

が中心でした。現在主流のJavaやPHP、Ruby、Pythonなどはカリキュラムに入っていなかったんです。

卒業後SIerに就職したのですが、結局Visual C++、Visual Basicを使った仕事は一度もありませんでした。

C言語を使った仕事はありましたが、Windowsアプリケーションを開発するのではなく、Unix上で動くC言語のバッチプログラムを作るものでした。

私が就職したのが2000年なので、ちょうど時代の流れがPCのデスクトップアプリケーションからWebアプリケーションへと移り変わる時期でした。

それまではVisual BasicでWindowsアプリケーションを開発してサーバ側をC++で作るみたいなC/S(クライアント・サーバシステム)というものが主流だったので、専門学校のカリキュラムもそれに合わせていたのでしょう。

そんな時期だったので、私の場合、学校で習ったプログラミング言語はほとんど仕事で使うことはなかったわけです。

とはいえ、ちょっとした作業を自動化するExcel VBA(Visual Basic for Aplication)などでVisual Basicの知識を活かすことはできました。

それに、プログラミングの基本は言語が変わっても同じなので、専門学校で学んだ知識は活きています。

このように、自分の仕事体験からしても、「仕事面ではWindows系よりもLinux系の技術を学んだほうがいいに決まってんじゃん」というのは正しいと考えられます。

そんな私ですが、2000年から仕事を始めて14年経った2014年に、Microsoftの主力プログラミング言語であるC#を使った仕事をすることになりました。

C#はWindowsだけのものではない

私が参加したのはWindowsアプリケーション開発ではなく、スマホゲームの開発です。

Unityというゲームエンジンは、C#を使って比較的かんたんに3Dゲームを開発できます。

UnityはMicrosoftの技術ではありません、Unity Technologiesという会社が開発したゲーム開発プラットフォームです。

なぜ、Microsoft以外の会社が作ったプラットフォームでC#が使われているのかというと、.NETのオープンソース版である「Mono」があるためです。

MonoはWindows以外のプラットフォームで動きます。Linux上でも動きますし、Unityのような独自の環境にも組み込むことができます。

なので、C#は今やWindowsに限ったものではなく、オープンな技術なんです。

今やMicrosoftの方がクロスプラットフォーム?

スマホアプリにおいてもXamarinというプラットフォームを使うことで、C#で書いたコードをWindowsアプリだけでなく、iOSやAndroid用にビルドできます。つまりはクロスプラットフォームなんです。

Unityも同様で、Unity上で開発したコードはiOS用にもAndroid用にもビルドすることができます。

iOS用アプリの開発言語であるSwiftやObjective-Cで書いたコードはiOSでしか動きません。

同様にJavaで書いたAndroidアプリのコードはAndroid上でしか動きません。

ところが、UnityやXamarinで開発したC#のコードは様々なプラットフォームで動かすことができます。

以前はMicrosoftの技術はクローズドでWindows上でしか動かないものでしたが、モバイル環境においては、AppleやGoogleの技術の方がよっぽどクローズドです。

その原因はMicrosoftがモバイル開発で遅れを取ったからだと考えられます。スマートフォンOSのシェアはAndroidとiOSで二分しており、Windowsのシェアは微々たるものです。

そのため、Microsoftはモバイル開発プラットフォームにおいてオープンでクロスプラットフォームな戦略を取っているのでしょう。

ですから、サーバーサイドの分野ではLinux系の技術であるJava, PHP, Ruby, Pythonのような技術を学んだほうがいいでしょうけれども、モバイルアプリの分野ではC#を学んでクロスプラットフォーム開発をするのも良い選択です。

とはいえ、スマホアプリ開発においてXamarinを採用している会社はまだまだ少数派です。AndroidアプリはJavaやKotlinで開発して、iOSアプリはSwiftで開発している会社がほとんどです。

それぞれのプラットフォームに合わせたUIを作り込みたいので、それぞれのネィティブ言語で開発しているという状況なんです。

それに比べてスマホゲーム開発は状況が異なります。

Unityを使ったクロスプラットフォーム開発が主流になっています。大ヒットしたポケモンGOもUnityで開発されています。

そんなわけでスマホゲームの分野ではUnityとC#がホットなんです。

C#はLL言語のような楽しさがある!

C#は言語としても優れていて静的型言語でありながら、LL言語のように簡潔に書ける工夫がなされています(varによる型推論やプロパティ、インデクサなど)。

例えば、JavaでArrayListの操作をするには

と書くのに対して、C#では

のように配列にアクセスするのと同じシンタックスで書くことができます。これがインデクサです。分かりきっている型の表記を省略できるのがvarによる型推論です。

連想配列も同じです。Javaだと

と書くところをC#なら

のように書けます。RubyやPHPの連想配列と同じ表記ができるんです。

簡潔できれいなコードを書ける構文が用意されていると、きれいにコードを書こうというモチベーションが高まります。

これは、犯罪発生率の「割れ窓理論」と通じます。

「汚いコードを書く」という”犯罪”を減らす方法

ある犯罪率が高い都市では、窓ガラスがたくさん割られていて、日に日に街は荒れていきました。

そんな状況を改善しようと、窓ガラスをすべてキレイに張り替えた所、犯罪発生率が大幅に減ったそうなんです。

その後、一枚でも窓ガラスが割られて、それを放置していると、窓ガラスは次々と割られて犯罪発生率が再び上がったそうなんです。

つまり、人は窓ガラスが割られているのを見ると、「もう一枚くらい割ったっていいじゃないか」という気持ちが湧いて実際に割ってしまいやすくなるということです。

部屋の汚さも同じで、引っ越したばかりで部屋が整理整頓されているうちはきれいに使おうとしますが、だんだん散らかってくると、どうでもよくなってきますよね。

ソースコードも同じです。Javaで冗長なコードを書かれているのを見ると、「じゃあ、おれも冗長なコピペコード書いたっていいや」と思いやすくなってしまいます。

ですから、言語に簡潔で美しい構文が用意されていることは、きれいなコードを書くための強力な仕組みなのです。

そして、そんな優れた構文を持つC#はWindowsだけでなく、.NETのオープンソース版であるMonoによってUnityやXamarinなどの様々なクロスプラットフォーム環境が用意されています。Linux系言語に引けを取らない学ぶ価値がある言語だと思います。

プログラミング初心者におすすめのサービス
1. 教室で学びたい派なら

プログラマカレッジは20代限定で、無料で受講できて、修了後、就職支援もしてくれるプログラミングスクールです。最高過ぎですよ、これ!!企業からの協賛金によって運営されいているため無料で受講できるんだそうです。すばらしいシステムだと思います!

30代の方には

プログラマカレッジは20代限定なので30代の方にはゼロスクがおすすめです。35歳以下なら無料で受講できます。教室も札幌、仙台、東京、大阪、神戸、福岡と全国展開しているので地方の方でも利用できます。

2. 自宅で学びたい派なら

TechAcademyの無料コースは20代限定でプログラミングのリモート学習 + 就職支援が無料で受けられるサービスです。なんといっても無料だし、就職に必要なスキルが身につけられるという意味でもやってみて損はないでしょう。

30代以上の方には

TechAcademyの無料コースは20代限定なので30代以上の方にはTechAcademyのJavaコースをおすすめします。Javaは求人が多くプログラマーとして就職したい方にはぴったりです。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

4. エンジニア未経験の人でも利用できる転職エージェント

ワークポートは未経験の人の転職活動も支援してくれますし、全国の求人を扱っているので地方在住の方にもご利用いただけます。お給料をもらいながら社内研修でプログラミングを学べる会社が狙い目です。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

やりたい仕事をしよう!

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

1都3県・大阪京都兵庫・福岡近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。


あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

なので、レバテックキャリアのホームページ見てみてください。「ホントだ、美人じゃん♪」ってきっと思うはずです笑

エンジニア未経験の方や地方在住の方にはワークポートというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『ワークポート』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、ワークポートは未経験者を支援し転職を成功させています。

未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

『派遣社員』なら正社員とフリーランスの『良いとこ取り』!

  • 「フリーランスになりたいけど、確定申告とかめんどくさいな」
  • 「定時帰りできる職場や、時短勤務がしたい」

という方には派遣社員がおすすめです。

派遣ってネガティブなイメージありますが、ITエンジニアの派遣社員なら

  • 時給が高く、給料も悪くない
  • やりたい仕事を選べる
  • 確定申告不要(派遣会社がやってくれる)
  • 厚生年金、健康保険も派遣会社が入ってくれる

ので、正社員とフリーランスのいいとこ取りな、とてもいい選択なんです。

 - 技術 ,