こんにちは。Webエンジニアの田島です。
ここ10年くらいでWebサービスやソーシャルゲームの市場が大幅に拡大し、それに伴いプログラマの需要も伸びています。
将来的な職業も見据えてプログラミングを学ぼうと思っている高校生や大学生の方も多いのではないでしょうか。しかし、一口にプログラミングを学ぶと言ってもその言語の種類は様々。
特に前提知識のない初心者ほど、そもそも何から学べば良いのかわからない!という声はよく聞きます。そんなときは、あなたが作りたいものをまず最初にイメージしてみることをオススメします。
そして、そのサービスや作品がどういうプログラミング言語で動いているのかを知り、その言語を学ぶことから始めると良いです。
今回は、世の中の有名なWebサービスからメディアアート、ゲーム作品に至るまで多数取り上げ、それらがどういったプログラミング言語(ツール)で動いているのかを紹介します。
是非、プログラミング言語選びの参考にしてみてください。
もし、エンジニアになりたくてこれからプログラミングを勉強し始めようと考えているのであれば、下記の記事でオススメのプログラミングスクールを紹介しています。
いまから勉強するのにオススメのプログラミング言語も紹介していますよ。
» 【最新】プログラミングスクールおすすめ厳選3校
お得に受講したい方は無料のプログラミングスクールを活用するのもひとつの選択です。
» 【無料プログラミングスクール厳選3校】独自調査で全11校を徹底比較
「クックパッド」のようなWebサービスが作りたい!
【特徴】
- Web上でユーザがコンテンツを投稿・編集できる
- 投稿されたコンテンツを他のユーザが閲覧できる
- アカウントでログインし、コンテンツをお気に入り登録したり、コメントを残したりできる
こうしたクックパッドが提供するようなサービスは、Webサービスと呼ばれるものの典型例です。
Webサービスを開発するためには、大きく分けてサーバーサイドとフロントエンドの2つを作る必要があります。
サーバーサイドとは、ユーザが投稿したコンテンツを保存したり、検索結果を返したり、
ランキングを集計したりといった、サービスの裏側の処理を行うための実装です。
サーバーサイドを作るためのプログラミング言語で最もポピュラーなのは、 Ruby です。
Ruby
Rubyは、日本人のまつもとゆきひろ氏が開発したプログラミング言語であり、初心者でも比較的学びやすい言語仕様となっています。
Rubyでサーバーサイドを実装するためには、Ruby on Railsというフレームワークを使うことが一般的であり、書籍や入門サイトも多数存在していますので、独学でも習得しやすくなっています。
一方で フロントエンド とは、コンテンツを画面上に表示し、レイアウトを調整したり動きをつけたり、クリックに対するリアクションを設定したりといった、ユーザの目に見える範囲の処理を行うための実装です。
フロントエンドを実装するには、HTML / CSS / JavaScriptという3つの言語を組み合わせて使う必要があります。
HTML / CSS / JavaScript
HTMLはブラウザに表示される文書を記述するための言語、CSSはその文書をレイアウトさせるための言語、そしてJavaScriptは記述された要素に動きをつけたり、クリックに対するリアクションをつけたりといった処理を実装するための言語です。
3つ同時に学ぶとなるとハードルが高そうですが、1つ1つの言語の学習コストは他のプログラミング言語よりも低いため、挫折する可能性も低いです。
サービスによっては、デザイナー職の方がこの仕事を兼業している場合もあります。
また、フロントエンド技術の中でも特に新しい HTML5 と呼ばれる技術を駆使すれば、音やグラフィックを使ったリッチなコンテンツやゲームを作ることも可能です。
例えば、auが提供している「warp screen」は、PC・スマートフォン上でVR体験ができるコンテンツです。これは、HTML5のWebGLという技術を使って実装されています。
「白猫プロジェクト」のような3Dゲームを作りたい!
【特徴】
- 3D
- iPhone / Android両対応
- リッチな画像エフェクト
スマホゲームでありながらコンシューマーゲーム並みのハイクオリティなゲームである白猫プロジェクトは、Unityという開発エンジンを使って作られています。
Unity
Unityは、基本無料で使うことのできる開発エンジンです。
特に3Dのゲーム開発を得意としていますが、展示作品やOculus用コンテンツなど、その開発事例は幅広く存在します。
開発言語としては、C#を用いるのが一般的です。
Unityは直感的なGUI(グラフィカルユーザーインターフェース)を備えており、3D計算の知識がなくてもリッチな3Dゲームが作れるため、触っていて楽しい開発エンジンです。
また、Unityで開発を行えばiPhoneでもAndroidでもプレイできるようにアプリを書き出せる点も魅力のひとつです。
「Perfumeのライブ」のようなインタラクティブ演出を作りたい!
【特徴】
- 高解像度な画面出力
- リアルタイム演算
- 音声・カメラ・物理キーによるインタラクション
紅白歌合戦のパフォーマンスなど、常に最先端のテクノロジーを駆使した演出に定評のあるPerfume。
そのライブ演出におけるグラフィック部分の多くは openFrameworksという開発ツールを用いて作られています。
openFrameworks
openFrameworksは、 C++ によってグラフィカルなコンテンツを開発できるツールです。
C++ という言語自体が高速に動作することもあり、記述されたプログラムは高解像度な出力であってもリアルタイムに演算し、描画することができます。
また、音声入出力や物理的なインタラクションを組み合わせた実装も得意としているため、ライブパフォーマンスや展示作品を作る際の定番ツールとなっています。
しかしながら、C++がやや他の言語と比べて難易度が高いことや、配付されているライブラリ群が開発環境によってはすぐに動かなかったりする場合も多いため、初心者にはややハードルが高いツールであることも覚悟していたほうが良いです。
そんな方にはまず、簡易版openFrameworksであるProcessingというプログラミング言語を先に触ってみることをオススメします。
openFrameworksがProcessingの設計思想に影響されて開発されたこともあり、開発の使い勝手は非常に近い部分が多いです。
また、Processingはより初心者に優しく作られており、言語も Javaベースで簡単に書けるため、とっつきやすいという利点があります。
「生きろ!マンボウ!」 のような2Dカジュアルゲームを作りたい!
【特徴】
- 2D
- iPhone / Android両対応
- 物理演算
短期間で500万ダウンロードを突破した2Dカジュアルゲーム、「生きろ!マンボウ!」。
開発はCocos2d-xを使って行われています。
先ほど、3Dゲーム開発エンジンとしてUnityを紹介しましたが、2Dゲームの開発であればこのCocos2D-xの方がより適しています。
Cocos2D-x
Cocos2D-xは、無料で使うことのできるゲーム開発ツールです。
現行の人気ゲームタイトルの中でも、2D作品はこのCocos2D-xを使って作られているものが多いです。
Unityは3Dの開発には適している一方で、2D作品の開発にはやや時間がかかってしまう部分もあります。
Cocos2D-xなら、2Dゲームに特化しており、特に「生きろ!マンボウ!」のようなカジュアルゲームを作る場合であれば最も適した選択肢です。
また、アクションゲームに必要な物理演算や当たり判定などの機能は標準で入っているため、自前で実装する部分は少なく済ませることができます。
「Pinokio」のような動くデバイスが作りたい!
【特徴】
- デバイスと繋げて実際のモノを動かすことができる
- 低価格で購入可能
- 音声・カメラ・物理キーによるインタラクション
「IoT」 が近年のトレンドワードになっていることもあり、プログラミングを使って画面上に何かを映し出すだけでなく、実際にあるモノを動かしてみたいという人も多いはず。
Pinokioは、プログラミングの技術と蛍光灯を上手く組み合わせて作られてた好例であり、Arduino という低価格で購入可能なツールキットを用いて作られています。
Arduio
Arduinoは、約2000円程度から購入可能なマイコンボードと開発環境からなるツールキットです。
プログラミングとデバイスを組み合わせて何か作る際、
最も名前が上がりやすい定番商品のひとつであり、大学の授業で導入しているところも多いようです。
Arduino言語というC++に近しい言語をいじりながら物を光らせたり、動かしたり、逆にそれらの入力信号を検知したりと、応用範囲は無限大です。
一方で、電子回路設計や、利用するハードウェアの特性に関する知識など、総合的なエンジニアリングの知識が必要になってくることにも注意しましょう。
「creive」のようなメディアを作りたい!
- 更新が容易に行える
- デザインのテンプレートが充実している
- SEOに強い機能が充実している
creiveのようなメディアサイトを作りたいなら、WordPressを使うのが最も一般的です。
また、個人のブログを1からカスタマイズして作りたい場合にも、WordPressはベストな選択肢となります。
WordPress
WordPressを使って企業のコーポレートサイトやオウンドメディアを作りたいという案件は多く、職業需要の高い技術であると言えます。
WordPressを使うには、PHPというサーバーサイドのプログラミング言語と、HTML / CSS / JavaScript というフロントエンドの言語をある程度理解している必要がありますが、Webサービスほど複雑なロジックを作ることは少ないため、プログラミングの入門用としても適しています。
また、世界中でもWordPressの利用者は非常に多く、デザインのテンプレートや、SEOを最適化してくれるプラグインが充実している点も良いポイントです。
▷ creive WordPressの記事一覧
▷ プログラミング言語PHP超基本文法
Gunosyのような機械学習のシステムを作りたい!
【特徴】
- 膨大なデータから、機械が自律的に学習しアルゴリズムの精度を高める(機械学習)
- 並列分散処理
機械学習や人工知能は近年の技術トレンドであり、その機能を活かしたサービスも増えてきています。
Gunosyもそのひとつであり、ユーザの趣向を機械学習で計測することで各ユーザに最適化されたニュースを届けるアルゴリズムを実装しています。
この機械学習を実装するためによく使われるプログラミング言語がPythonです。
Python
Pythonはプログラミング言語の中でも特に、短い行数でシンプルに実装できることが特徴の言語です。Googleのオフィシャル言語としても知られ、Google社のプロダクトの多くはPythonで実装されています。
特に統計学や機械学習のライブラリ群が充実しているため、データを集計して何かを計測したいとき、Pythonは強力に働くでしょう。
instagramのようなスマホアプリを作りたい!
スマホゲームを作ることのできる開発ツールとして、UnityとCocos2d-xを紹介しましたが、標準的なアプリを作るのであれば、ネイティブのプログラミング言語で作るのが良いです。
ネイティブのプログラミング言語とはつまり、iPhoneであればSwift、AndroidではJavaによって開発するということです。
Swift
Swiftは、iPhoneアプリを作るためのプログラミング言語です。
以前はObjective-Cというプログラミング言語によってiPhoneアプリ開発は行われていましたが、
2014年に新しいプログラミングとしてSwiftがAppleから発表され、より簡単に開発が行えるようになりました。
始めてiPhoneアプリを制作する方であれば、Objective-CではなくSwiftを選択するのが良いです。
また、iPhoneアプリ開発がAndroidアプリ開発と異なる部分として、
1. Appleに開発者登録する必要がある (年会費$99 2016年3月現在)
2. Apple Storeにアプリを公開するにはAppleの審査に通る必要がある
という2点があるので注意しましょう。
つまり、開発着手から公開までのハードルが他のプラットフォームと比べてやや高めになっています。
Java
Androidアプリを開発するには、Javaというプログラミング言語を使います。
iPhoneアプリとは異なり、Androidアプリを公開するために特に何らかの審査を通す必要はないのですが、Androidは端末数が多いため、制作したアプリがきちんと全ての端末上で動作することを確認し、動作しなければそれをデバッグする作業に時間を費やしてしまう可能性があるので注意しましょう。
また、プログラミング言語 Java は歴史の古い言語であり、家電製品やサーバーサイドの言語としても幅広く利用されているのが特徴です。
一度習得しておけば、また別の機会で将来役に立つことがあるはずです。
おわりに
プログラミング初学者にとって、最も重要なことは1つの完成品を作り上げるまで、いかにモチベーションを維持しつづけられるかだと思います。
特に、初めて何かを作るときは、プログラミングの難易度の高さに負けて頓挫してしまう人が多いので注意しましょう。
ギターでいうところの、「Fコードの壁」を乗り越えるために、今回の記事が参考になれれば幸いです。