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

      2017/01/12

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

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

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

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

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

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

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

当時の授業はマイクロソフトのプログラミング言語であるVisualC++とVisualBasicを使ったものが中心でした。現在主流のJavaやPHP、Rubyなどはカリキュラムに入っていなかったんです。

卒業後SIerに就職したのですが、VisualC++、VisualBasicを使った仕事は一度もやっていません。

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

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

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

そんな時期だったので、私の場合、学校で習ったプログラミング言語はほとんど仕事で使うことはなかったわけです。とはいえ、ちょっとした作業を自動化するExcelVBA(Visual Basic for Aplication)などでVisualBasicの知識を活かすことは出来ましたし、プログラミングの基本は言語が変わっても同じなので、学んだ知識を活かすことは出来ています。

このように、自分の仕事体験からしても、「仕事だと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やObjectiveCで書いたコードは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で開発して、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. 自宅で学びたい派なら

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

2. 講師から直接学びたい派なら

ストリートアカデミーをおすすめします。こちらもユーザー登録無料で参加したい講座だけ受けられるますし、料金も良心的なので良いと思います。1000円の講座もありました!

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

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

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

エージェントを使った方が転職活動は楽です

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

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

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

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

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

エンジニア未経験の方や地方在住の方には『DODA』

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

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - 技術 ,