プログラミングの始め方についての記事です。
初めてプログラミングに取り組む場合に、どのような機材を準備すればよいのか、プログラミング言語やプログラムを作成するためのソフトウェアの入手方法などを紹介します。
プログラムを作成するにあたり、どの環境で動くプログラムを作成するか決める必要があります。主な動作環境として以下があります。
Windows PCで動作するアプリケーションです。Windowsで動作するメモ帳、ペイント、Excelなどのデスクトップアプリケーションがあります。
また、ウィンドウが表示されず、プログラムが実行されると、コマンドウィンドウが表示されるコンソールアプリケーションもあります。
また、Windowsのストアアプリからダウンロードしてインストールするアプリなどもあります。
Mac OS上で動作するアプリケーションです。メモ帳、Excelなどのデスクトップアプリケーションがあります。またウィンドウが表示されないコンソールアプリケーションもあります。
Androidのスマートフォンやタブレット端末で動作するアプリケーションです。通常、アプリはGoogle Playからダウンロードしてインストールします。
iPhone, iPadのスマートフォンやタブレット端末で動作するアプリケーションです。通常、アプリはApple App Storeからダウンロードしてインストールします。
Webサーバーと呼ばれるインターネットに接続したサーバーに配置して動作するアプリケーションです。一般的にはWebアプリケーションと呼ばれます。
家電や炊飯器、コピー機などの電気製品内で動作するアプリケーションです。マイコン(マイクロコンピューター)や、Raspberry Piなどのシングルボードコンピュータなどもあります。
ゲーム機、スーパーコンピューター、人工衛星など、いろいろあります。
ターゲットとなるデバイスが決まりましたら、プログラムを開発(記述)する(コーディングする)、コンピューターが必要です。
プログラム作成に用いるコンピューターは(非常に特殊なハードウェア用のプログラム開発でない限りは)一般的な市販のPCが利用できます。
一般的なPCを用意する場合、選択肢としてWindowsマシンを入手するか、Macのマシンを入手するかの選択があります。
通常であれば、利用者数の多いWindowsマシンを入手するのが良いです。iOS(iPhone, iPad)のアプリケーションを開発する場合、Macのアプリケーションを開発する場合は、Windowsマシンでは開発できませんのでMacを入手する必要があります。
プログラムの記述自体はPCの処理能力はあまり必要ありませんが、プログラムのコードを実行バイナリに変換する作業(コンパイル/ビルド)や、
プログラムを動作させながら動作確認する作業(デバッグ)では処理能力が必要になります。
また、プログラムを作成する中で画面に表示するアイコンや画像などのリソースを作成する場合には画像編集や作画などの作業が必要になることも多々あります。
3DCGやCADを利用するほどのスペックは不要ですが、画像編集やビルドの作業が快適にできるよう、スペックは高めのPCを用意したほうが良いです。
CPUのスペックは高めに、メモリの搭載量も多いほうが良いです。
また、ゲーム等を開発する場合は最近のゲームは3DCGのゲームが多いため、グラフィックスカードも高いスペックのものを用意する必要があります。
具体的にどのメーカーのどんなPCが候補になるか紹介します。
HPの場合は以下のモデルが一例になります。
開発環境の軽いプログラムであれば、EliteBookでも問題ないかと思われますが、開発環境が重い場合ちょっとスペックが足りないかもしれません。
通常のプログラム開発であれば、シングルCPUでよいと思います。(デュアルCPUやQuadroのハイエンドグラフィックスカードはオーバースペックです)
Dellの場合は以下のモデルになります。
OptiplexでもメモリやCPUを増強すれば十分使えるとは思いますが、画像編集などもするのであれば少しだけスペックの高いマシンにしておいたほうが良いかと思います。
Lenovoの場合は以下のモデルになります。
MacやiOSのアプリケーションを開発する場合はMacの導入が必要になります。開発用でMacを導入する場合は以下のモデルになります。
プログラムを開発する場合のディスプレイはなるべく大きいほうが良いです。大きいディスプレイのメリットは次の通りです。
大きいディスプレイ、特に縦の長さが長いと画面に表示できるコードの行数が増えます。1画面に表示できるコードの行数が多いほうが見通しが良く、コードの編集や記述が快適にできます。
大きいディスプレイを利用すると、プログラムの実行結果とプログラムの実行状況を並べて確認することができます。画面が小さいとどちらかしか表示できないため、画面を切り替えながら作業する必要があり、作業効率が下がります。
参考資料を表示して参照しながらコードを記述したり修正することも多々あります。大きいディスプレイでは参考資料とコードを並べて配置できるため作業しやすいです。
プログラム以外にリソース画像などを編集する場合も画面が大きいほうが作業しやすいです。業務でコードしか記述しない分業体制がしっかりしている体制であれば、プログラマであれば画像編集はしませんが、DevOpsな環境でのフルスタックエンジニアや、趣味や個人的なプログラミングの場合は画像編集などもする必要が出てきます。
上記の理由から、ディスプレイはなるべく大きなものを用意するのがおすすめです。最低でもFull HD街道度のディスプレイ、27インチ以上のWQHD、または、40インチ程度の4Kディスプレイ、ワイドディスプレイなどがおすすめです。ノートPCの場合は大きいディスプレイはないため、Full HDのディスプレイになってしまいますが、外付けで大きいディスプレイを接続することを検討してもよいかもしれません。
プログラムを動作させたいターゲットデバイスが決まり、開発用のハードウェアが入手できれば、プログラムの開発ができます。
プログラムを開発するにあたり、プログラミング開発言語と開発環境を選択する必要があります。
ターゲットデバイスによっては選択の余地がない場合もありますが、数種類の中から選択することができます。
開発言語や環境環境を選択するためのポイントは以下になります。
利用者数が多いと、プログラムや開発環境に関する情報も豊富ですし、不具合もすぐに修正されます。
新しいバージョンのOSへの対応やOSの新機能への対応も速いです。
開発環境や実行環境に不具合がある場合があります。サポートがしっかりしていないと、なかなか不具合が修正されなかったりします。
開発環境がバグだらけですぐクラッシュしてしまい、半年以上使い物にならなかった。という事例もあったりします。
オープンソースの開発環境も品質が高いものがありますが、いつの間にか開発が下火になっていた。だんだんと別の開発環境のシェアが上がっていって、
いつの間にかユーザーがいなくなっていた。というケースもありますので、注意する必要があります。
ある開発環境では10行書けば、10分作業すれば作成できるプログラムがあったとします。このプログラムと同じ処理をするプログラムを
別の開発環境で作成する場合、1000行コードを記述する必要があったりします。業務で開発環境や開発言語を指定されていないのであれば、
生産性の高い開発環境を選択したほうが、楽しく開発できます。
ターゲットデバイスごとに具体的な開発環境と開発言語を紹介します。
Windowsのデスクトップアップリを開発する場合は、現時点ではVisual Studioを利用して、C#で記述するのが無難だと思います。
C++やJavaなどの選択肢もありますが、生産性などを考慮するとあまりお勧めできません。
コンソールアプリケーションの場合は、ウィンドウのUIを作成する必要がなくロジックのみの記述でよいため、プログラミング言語の選択肢が広がります。
Pythonなどのスクリプト言語はメモ帳だけでも作成できますが、初心者の方はプログラムにバグや間違いがあった場合に調査を効率的にするためにも、
デバッガなどの開発環境をしっかり用意することをお勧めします。
Macのアプリケーションの場合は、Xcodeを利用した開発が基本です。クロスプラットフォーム対応でJavaを利用する例もありますが、画面の見栄えなどが違ってくるため、
インストーラーやちょっとしたツール以外ではあまり見かけません。
開発言語はSwiftとObjective Cの2種類がありますが、最近はSwiftでの開発が主流になりつつあります。
コンソールアプリケーションの場合は、ウィンドウのUIを作成する必要がなくロジックのみの記述でよいため、プログラミング言語の選択肢が広がります。(Windowsと同様です)
Androidのアプリケーション開発の場合、Android Studio を利用するのが基本です。プログラミング言語はJavaが基本です。Kotlinも選択肢になってきています。
Macのアプリケーション同様Xcodeの開発環境になります。言語はSwiftとObjective Cがありますが、Swiftを利用するのが主流になりつつあります。
クロスプラットフォームの開発言語として、C#によるXamarinやDelphiなども選択肢にはあります。Delphiも開発環境がこなれてきていますが、利用者数が少ないため情報が少ないのがネックです。
Webアプリケーションの場合はWebサーバーの種類によって選択肢が変わります。
Webアプリケーションの場合はWebサーバーの種類によって選択できる環境や言語が変わってきます。また、クラウドサービスを利用する場合は、
プログラムロジックのみを記述する方法なども利用できるため、さらに選択肢が広がります。
変化の激しい分野でもありますので、どれを選択するか迷うところではありますが、初心者ほど開発環境がしっかり用意されているものを利用するのがおすすめです。
Perl,PHPなどは有名ですが、高機能なデバッガやデファクトスタンダードな開発環境がないこともあり、初心者には勧めづらい面があります。
Javaは学校などで教育用として利用されているため、言語自体は良いのですが、Tomcatを利用した開発は冗長なコードになりやすく、
Webアプリの開発では生産性の面で初心者には勧めづらいです。
組み込み機器の場合は、専用の開発環境があることが多いです。
ゲームを開発する場合は、開発環境が違います。最近のゲームは3Dゲームが主流になり、グラフィックスやサウンドなども高度化しているためゲーム専用の開発環境があります。
ゲームの開発環境で主なものはいかがあります。
上記の開発環境で開発した場合、PlayStation、XBoxなど、Windows以外のデバイスで動作させることもできます。(ライセンス等が必要です)
ターゲットデバイスが決まり、開発用マシンなどのハードウェアも準備ができ、開発環境やプログラミング言語も選定ができれば準備は完了です。
準備はできたものの、どこから始めてよいかわからない場合は、次の順番で進めていくのが良いです。
開発用マシンに開発環境をインストールします。インストール後、開発環境を起動してみます。何もしない「空のアプリケーション」などを作成してみるのもよいです。
開発環境によっては、サンプルアプリが付属している場合があります。サンプルのアプリケーションを実行してどんなアプリケーションが作れるのか見てみます。
利用している開発環境やプログラミング言語の「はじめての~」の書籍を購入して、書籍に書いてある内容をなぞって簡単なプログラムを作ってみます。
初心者のうちは利用している開発環境、プログラミング言語の両方が一致している書籍を購入したほうが良いです。
Tips系の書籍も発売されていますが、やりたいことが明確になっていないうちはあまり役に立たないので、書いてある内容に従って作業して、簡単なプログラムを完成させる内容の本を購入するのがおすすめです。
本を読みながらいくつか簡単なアプリを作成できたら、自分で簡単なアプリを作ってみます。
などを作ってみます。
4で作成したアプリを少しずつリッチにしていきます。
アプリをだんだん高度にしていく中で分からない点が出てくるので、調べて対応していきます。
実用的なアプリを作ってみます。
このレベルになるとデータベースを利用したほうが良い状況になってきますので、データベースの使い方なども調べてみるとよいと思います。
Git,Subversionなどのソースコード管理も必要になってくるかもしれません。
Excelで十分であったり、アプリを作成する必要がない場合もかなりありますが、アプリケーション化したほうがよさそうなものを見つけて作ってみます。
楽しくアプリを作ってプログラムをマスターしたい場合は次の順番を一例として紹介します。
デスクトップアプリケーション、Webアプリケーション、データベースが扱えれば、大抵のプログラムは(ハードウェアの縛りがなければ)作れます。
スマートフォンのアプリは全部ネイティブで作成する方法もありますが、WebViewを配置して大部分をWebアプリケーションとして動作させる実装もあるため、
Webアプリケーションをマスターしてからチャレンジしてみるのもよいかと思います。
一例です。
基礎をしっかり学ぶほうが良いので、コンソールアプリケーションの作成から始めるのが良いと思います。
以前はC言語からスタートしていましたが、最近はJavaが主流になりつつあるので、Javaから始めるのが無難だと思います。
メモリ管理やポインタの概念も知っておいたほうが良いため、Javaの次はC言語を学習するのもよいと思います。
また、プログラミングの学習と並行して、Webページ制作に必要なHTML、CSS、JavaScriptなどのマークアップ言語もマスターします。
Webページ制作ができるようなったら、Webサーバーで動作するバックエンドプログラムを学習します。汎用的な言語が良いので、以前はPerlを学習するのが一般的でしたが、
最近はPHPやPythonを学習するほうが良いかと思います。
Tomcatはエンタープライズ用途のためあまり使われない印象ですが、サーブレットの知識は知っていたほうが良いと思いますので、こちらも簡単に学習しておいてもよいかと思います。
フレームワーク系は流行り廃りが激しいため、新しいものに飛びつかないほうが良いです。
また、Visual Studioを利用してC#やVBなどのビジュアル プログラミングに染まってしまうとJavaやC/C++の生産性が低すぎて、あほらしく思えてくるので、後回しにしたほうが良いです。