ワテの場合、プログラミングの学習は独学で開始した。
市販の教科書を読んで勉強すると言うやり方だ。
その後、社外で開催されている有料プログラミングスクールに通った経験も何度かある。
そんな経験に基づいて、ワテがお勧めするプログラミングスクールを紹介したい。
今の時代、小学校からプログラミングを習う訳なので、大人でプログラミングが出来ないと言うのは肩身が狭い。
仕事でエクセルを使っている人で有ればVBAと言う無料プログラミング言語が付属しているにも関わらず、一度も使った事が無い人が殆どだろう。まさに勿体無い。
手作業でやれば数時間掛るエクセルのデータ処理をVBAを使って簡単なプログラムを書けば一瞬で処理できる場合もある。
今からでも遅くはないので、プログラミングを習得する事はあなたの人生を豊かにすることは間違い無いだろう。
では本題に入ろう。
どんな言語を習うべきか?
世の中には多数のプログラミング言語がある。
まずはどんなプログラミング言語を習いたいのかを決める必要がある。
貴方はプログラミングをマスターして何をしたいのか、その目的に応じて言語を選択すると良い。
プログラミングで出来る事は無数にある。
主なものを列挙してみると以下の通り。
- ゲームアプリの開発
- スマホアプリの開発
- シミュレーションプログラム、数値計算
- コンピューターグラフィックス
- 人工知能
- ロボット制御、機械制御
- ウェブプログラミングでウェブサイトを構築
などか。
勿論、これら以外にも多数の分野でプログラミングが利用されている。
それぞれの分野において、主流となるプログラミング言語がある。
例えばウェブプログラミングの場合ならば、PHP、Python、Ruby、Java EE、JavaScriptなどの言語が主流だ。
特にサーバーサイド(バックエンド)の開発では、多くのサイトPHPが使われている。
それ以外だと、マイクロソフト社のASP.NETと言うウェブサイト開発環境を使って構築されているものも有る。その場合にはマイクロソフト社のC#(シーシャープ)を使って開発を行う。
あるいはJava EEもサーバーサイド開発に用いられる。
プログラミングスクールでどの言語を選ぶかは好みの問題だが、ワテのアドバイスとしてはあまりマイナーな言語よりも利用者の多いメジャーな言語を選ぶと良いだろう。
そうすれば、関連書籍も豊富であり、ネット検索して情報を探す場合にも目的とする情報がヒットし易いからだ。
かつ、将来、プログラミングの分野に就職したい場合にも有利だろう。
人気のプログラミング言語は何か?
キーワード「人気 プログラミング言語」などで検索すると、多数のサイトに人気プログラミング言語についての情報がある。
ここではプログラミングの世界では有名なGitHub(ギットハブ)に掲載されている人気言語のグラフを紹介しよう。
ちなみにGitHubとは、複数人のチームでソフトウェアを開発・管理ができるプラットフォームだ。GitHubのサーバーにソースコードをアップロードしておけば、複数人のソフトウェア開発者が共同でコードの開発や管理が可能となる。
もちろん、ソースコードのバージョン管理機能なども完備している。
かつGitHubにはSNS機能も付属しているので、プログラマー同士がGitHubを通して交流を図る事も出来る。つまりまあ、GitHubはプログラマーにとってのFacebookのような存在でもある。
そのGitHubに登録されている膨大なソースコードに対して、ダウンロードされたソースコードの言語の種類を集計したものが下図だ。
図 GitHub公開の各プログラミング言語のプルリクエスト数(引用元 https://octoverse.github.com/)
このグラフの縦軸は、主なプログラミング言語の名称。
横軸はプルリクエスト数と呼ばれる数値であり、具体的にはソースコードのダウンロード数とそのプロジェクトのコード変更要求数の合計だ。
プルリクエスト数が多いからと言って必ずしもその言語の人気が高いとは断定は出来ないが、プルリクエストが多い訳なので世間一般で大勢の人がその言語に関心を持っていて、その言語を使っている人も多いと考える事は出来るだろう。
このグラフに登場するプログラミング言語を人気の高い順からワテ流に簡単に解説してみたい。
以下の解説は、あくまでワテの個人的な感想に基づいている。
JavaScript
Webサイト構築には必須の言語だ。特にクライアントサイド、つまりブラウザー側で実行されるプログラムはほぼ全てJavaScriptで記述されている。
なので人気第一位がこのJavaScriptで有ると言うのは頷ける。
例えば今皆さんが見ているこのページには各種の広告が表示されているが、そのような広告の多くはJavaScriptプログラムが表示している。
単純な広告の場合にはJavaScriptで記述する必要は無くて、単に画像を埋め込んでハイパーリンクを張っておくだけで良い。
でも皆さんが過去に訪問したサイトの情報に基づいて、皆さんがどんな商品に関心を持っているのかなどはクッキーと言う技術で把握されているので、このページに表示されている広告は皆さんが関心がある商品が掲載されているだろう。
そう言う仕組みを実現しているのがJavaScriptで記述した広告のプログラムなのだ。
名前が良く似た言語にJavaがあるが、JavaScriptとJavaは全く別物である。
Python
プログラミング関連のネットニュースなどを見ていると、最近の傾向ではPythonは最も人気が高い言語の上位にランクされている。
Pythonの特徴としては、他の言語で良く使われるカッコ {・・・} でブロックを囲むのでは無くて、インデント(字下げ)位置でプログラムのロジックが決まる。
例えばC言語でforループを二重にする場合には以下のように記述する。
for (int i = 0; i < 3; i++) {
printf("i=%d\n", i);
for (int j = 0; j < 3; j++) {
printf("\tj=%d\n", j);
}
}
その実行結果は以下の通り。
i=0
j=0
j=1
j=2
i=1
j=0
j=1
j=2
i=2
j=0
j=1
j=2
それをPythonで記述すると以下のようになる。
for i in range(3):
print('i=',i)
for j in range(3):
print('\tj=',j)
このようにPythonではインデント位置が文脈を決める重要な要因となるので、Pythonの特徴としては、誰が書いても同じようなソースコードになる。
その辺りが他のプログラミング言語には無いPythonの大きな特徴だ。
JAVA
Javaはサン・マイクロシステムズが開発した言語だ。
ウェブプログラミングの領域で良く使われているがデスクトップ環境のアプリケーション開発も可能だ。
ウェブプログラミングでは、クライアント側の処理はJavaアプレット、サーバ側ではJavaサーブレット (Java Servlet) やJavaServer Pages (JSP) などのJava EE技術が使われている。
多くの分野で使われている人気言語なので、Javaをマスターすれば転職にも有利だろう。
RUBY
言わずと知れた、まつもとゆきひろ氏(通称 Matz)により開発されたオブジェクト指向スクリプト言語だ。
PHP
ウェブプログラミングの王道PHPだ。
Linux OSとApacheサーバーで構築されたウェブサイトの多くはPHPで記述されている。
PHPの特徴としては、サーバーサイドでhtmlページを生成するのが主な目的なので、そのソースコードには <div> ・・・ </div> などのhtmlのタグに混じってPHPのコマンドを記述する事も出来る。
純粋にC言語などを学んで来た人がそのようなPHPのソースコードを見ると最初は戸惑うと思う。でも使い慣れて来ると、ウェブプログラミング用に物凄く良く考えられた言語で有る事に気付くだろう。
C++
通称、シープラプラ。
「hello world」の元祖がC言語だ。
そのC言語をオブジェクト指向などの機能を持つように拡張したものがC++だ。
C言語には無いクラス(Class)と言う概念がC++には登場する。
C++(やC言語)の大きな特徴としては、メモリ管理はプログラマー自身が行う必要がある。newでメモリを確保して、使い終わったらdeleteで開放する。なお、スマートポインタと言う新しい機能を使えばメモリ管理は自動でやってくれる。
いずれにしても、C++は歴史も長く人気の高い言語ではあるが、メモリ管理を常に意識してソースコードを記述しなくてはならないと言う点が他のプログラミング言語とは一線を画すとワテは思う。
かつ、C++は様々な新しい概念・機能を取り込んで常に進化(あるいは変化と言うべきか)しているので、C++以外の言語しか知らない人がC++を学び始めると、恐らく多くの人は「なんじゃこりゃ!?」と思うに違いない。
超変態言語と言っても良い(ワテの感想)。
しかし、C++の魅力としては、オブジェクト指向プログラミングの長所を最大限に生かす事が出来るので大規模プロジェクトにも適しているし、ポインタを駆使したメモリ管理を意識したコードを自分で書けるので、コンピュータを使いこなしていると言う実感を抱く事が出来る。
と言う事でC++を完璧にマスター出来れば、他のプログラミング言語なんて屁の河童と言うくらい簡単にマスター出来るだろう。
CSS
CSSはプログラミング言語と言うよりはウェブサイトの見栄えを設定するための設定ファイルのようなものだ。
文字の色、フォント種類、フォントサイズ、画像の大きさなど、各種のパラメータを指定出来る。
CSSの文法を改良したSCSSを言う言語もある。
ウエブサイト構築技術をマスターしたいなら、JavaScriptの学習だけでなくCSS、SCSSの学習も必要だ。
C#
シーシャーブと発音する。
その名の通り、C言語風のプログラミング言語であり、マイクロソフト社が開発している。
C言語やC++ではメモリの確保や開放をプログラマー自身が行う必要がある。もし開放忘れがあるとメモリリークを起こすなどのバグを作ってしまう場合もある。
それに比べてC#の場合には、実行環境である.NET Frameworkの上で動くが、メモリ管理は.NET FrameworkがWindows OSと連携して上手い具合に裏でやってくれているので、C、C++プログラマーが最も気を使うメモリ管理に関しては殆ど気にしなくても良い。
また、文字列の操作に関しても、C、C++系では、常に文字列末尾のnull文字を意識する必要があるが、C#では全くそんな必要は無いので、そう言う点でもCプログラマーからすれば、C#はアホみたいに楽ちんな言語に思える。
一旦C#を使い始めたらCやC++には戻りたくない、そんな気持ちになる(ワテの場合)。
なお、文法的にはJavaと非常に良く似ているので、C#を完璧にマスターしたら、それはJavaも殆どマスターしたと思っても良い。
GO
ワテの場合は、GO言語は全く知らない。
今回、この記事を書くに当たり調べてみた。
Goの起源はGoogleのエンジニアであるRobert Griesemer、ロブ・パイク、ケン・トンプソンによる、新しいプログラミング言語を設計する実験的なプロジェクトに端を発する。
(省略)
後のインタビューで、3人の言語設計者すべてが、新しい言語を設計する主なモチベーションとしてC++が好きでないこと(英語版)を共有していたことを述べている。
引用元 GO言語のWikipedia
との事だ。
確かにワテの場合もC++言語は好きではない。
ワテに言わせれば、C++の言語仕様は間違った方向に進化している気がする。つまり、他のプログラミング言語とは似ても似つかない文法や概念、例えば右辺値や右辺値参照と言った概念はC++言語特有だ。
右辺値参照などの新機能を使いこなせば、少しでも高速処理が可能なプログラムを記述できるのは分るが、そんなヘンテコな概念をプログラマーが常に意識しながらコードを書く必要があると言うのは本末転倒のような気がする。
そんなややこしい概念を導入するくらいなら、コンパイラ自身を高性能化して、自動的に最適なコードを生成する努力をすべきだと思うが。
まあ、ここでワテがボヤいてもどうこう成る問題では無いが。
と言う事で、GO言語の開発者たちはC++が嫌いと言う事なので、その点から判断してもGO言語は分かり易い文法体系かも知れない。
ワテもこの際、少し習ってみるかな!
C
C言語。
由緒あるC言語をカーニハン&リッチーの教科書で習った人も多いはずだ。
UNIXオペレーティングシステムを開発する為に開発された言語である。
ポインタ変数を使えば、メモリの何番地からデータを読み書きすると言った事が可能になる。
その性質を利用すれば、ハードウェアレベルの処理を記述し易いので、制御系システム、組み込みシステムなどのプログラミング言語として幅広く利用されている。
あるいは、汎用的なプログラミング言語として、数値計算やシミュレーションなどの領域でも広く活用されている。
最初に学ぶ言語としてC言語を選択すべきかどうかの判断は難しいが、JavaScript、Ruby、Pythonなどのスクリプト言語はインタープリタ型言語であるが、コンパイラ型言語の代表格と言っても良いC言語を学ぶ事は、コンピュータの仕組みを理解する上でも大いに役立つと思う。
TYPESCRIPT
TypeScriptはJavaScriptの改良版と言う感じだ。
つまりJavaScriptに欠けているものを追加して機能を強化したものがTypeScript。
具体的に言うなら、TypeScriptには以下の機能や仕様が備わっている(主なもの)。
- クラス
- アロー関数式(ラムダ式)
- オプション引数、デフォルト引数
- let, const
- テンプレート文字列 : 文字列内への変数埋め込み
- モジュール
- Async/Await
もし今から習うなら、TypeScriptでもJavaScriptでもどちらでも良いと思う。
取り敢えずJavaScriptを習ってみて、その後でTypeScriptを習えばJavaScriptで苦労した処理がTypeScriptではスッキリと記述できるなどの感動があるだろう。
ワテがおすすめするプログラミングスクール
さて、ワテ流の各種プログラミング言語解説を読んできただいた皆さんは、いよいよどこかのプログラミングスクールに申し込んでみようかなあと思っているに違いない。
以下では、人気いの高い三つのプログラミングスクールを紹介したい。
- TechAcademy 自宅で学べるオンラインのプログラミングスクール
- TECH::CAMP 人生を変えるテクノロジースクール
- WEBCAMP ONLINE 全国でWebデザインが学べる
これらのスクールは、皆さんも一度は名前を見掛けた事があるかも知れない。
それぞれのスクールの特徴を見てみよう。
TechAcademyの特徴
TechAcademyはオンライン完結型のプログラミングスクールであり、コースが多いのが最大の特徴だ。
本日の時点で、以下のコースがある。
プログラミング
- Webアプリケーションコース
- PHP/Laravelコース
- Javaコース
- フロントエンドコース
- WordPressコース
- iPhoneアプリコース
- Androidアプリコース
- Unityコース
- はじめてのプログラミングコース
- ブロックチェーンコース
- スマートコントラクトコース
- AIコース
- Pythonコース
- Scalaコース
- Node.jsコース
- Scratchコース
デザイン
- Webデザインコース
- UI/UXデザインコース
- 動画編集コース
マネジメント
- Webディレクションコース
- Webマーケティングコース
トレーニング
- HTML/CSSトレーニング
- Bootstrapトレーニング
- GitHubトレーニング
- Photoshopトレーニング
ワテのコメント
TechAcademyのこれらのコースを見る限りは、プログラミングに関して殆ど全ての分野をカバーしているので、アプリ系であってもWeb系であっても学ぶ事が可能だ。
さらにデザインやマネジメントと言ったコースあるので、プログラミング以外の専門スキルを身に付けたい人にも向いている。
興味ある人は、早速申し込んでみると良い。
TECH::CAMPの特徴
TECH::CAMPの場合は、全国にある教室に通ってプログラミングを学ぶスタイルが基本だが、オンライン学習も可能である。
教室が近所にある場合はTECH::CAMPの教室に通うのが良いだろう。
公式サイト
https://tech-camp.in/
から引用しながら主なコースの特徴を見てみよう。
Webサービス開発
こんな方にオススメです | 身につくスキル |
|
|
引用元 https://tech-camp.in/
ワテのコメント
HTML、CSS、JavaScriptと言ったクライアントサイドプログラミングに必要な知識だけでなく、Ruby on Railsを使ったサーバーサイドプログラミングも学習出来る。
さらにウェブプログラミングの醍醐味であるデータベースプログラミングも学習できるのでお勧めだ。
ウェブサイト訪問者さんが何らかのキーワード検索した場合に、その条件に基づいてデータベース検索を実施するSQL文を発行。
検索結果を見易い形に整えてブラウザーに表示。
このような一連の処理はMVC(Model View Controller)と言うデザインパターンで構築するのが現在のウェブプログラミングでは主流であり、Ruby on RailsもMVCアーキテクチャを採用している。
従って、TECH::CAMPのWebサービス開発コースを受講すれば、ウェブプログラミングの基本をバランスよく学べると思う。
VR・3Dゲーム開発
こんな方にオススメです | 身につくスキル |
|
|
ワテのコメント
C#(シーシャーブ)はその名の通り、C言語系に属する言語だ。
C言語、C++などと比べると、若干はマイナーな言語ではあるが、WindowsOS向けのプログラミングを始めるには、最適の言語だろう。
C#で記述したプログラムはマイクロソフト社の.NET Framework環境や.NET Coreで動く。
C#言語自体はJavaに非常に良く似た文法体系なので、C#をマスターすればJavaの習得は短時間で可能である。
オリジナルサービス開発コース
身につくスキル
- ゼロからサービスを作るための流れを理解できる
- Gitを使ってソースコードの管理ができるようになる
- インターネット上で自分のWebサービスを公開できるようになる
デザインコース
身につくスキル
- どんなデザインにも必須となる基本的なルールとテクニックを理解できる
- Webサイトを美しくデザインするワイヤーフレーム制作技術
- Illustratorを使ったロゴ・ポスターなどの制作技術
- PhotoShopを使った画像加工の技術
これら以外にも以下のコースがある。
- AI(人工知能)入門(人工知能の仕組みや原理を理解し、扱えるようになりたい方)
- AIアプリ開発(応用)(人工知能を活用したアプリを開発したい方)
- iPhoneアプリ開発(未経験からあなただけのiPhoneアプリを作りたい方)
- テクノロジーセミナー(周りと差をつけたビジネスマンになりたい方)
- TECH::EXPERT(未経験から最短最速でWebエンジニアとして転職を目指したい方)
このように、TECH::CAMPは豊富なコースの中から自分が習いたいコースを選択出来るので、極端にマイナーな言語を習いたいと言うような特殊な事情が無い限りは、万人向けのプログラミングスクールと言える。
今後、様々な分野で需要が見込まれるAIに関するコースが入門コース、応用コースと二種類もあるので、TECH::CAMPのプログラミングスクールは、AIを学びたい人にも最適だろう。
DMM WEBCAMPの特徴
DMM WEBCAMPの特徴としては、未経験や初心者の方でも3ヶ月という短期間で、高いエンジニアスキルを身に付けることができる転職・就職保証型プログラミングスクールだ。
受講完了後、3ヶ月以内に転職・就職できない場合は全額返金しています!とのキャッチフレーズなのだ。
ほんまかいな!
どこのプログラミングスクールに申し込むべきか
もし教室が近くにあるなら、教室に通うスタイルのTECH::CAMPをお勧めしたい。
疲れていてやる気が出ない日でも、TECH::CAMPの教室に行けばやる気になるだろう。
一方、自宅でオンライン学習をする場合には、自分の強い意志が必要だ。
今日は、疲れているのでオンライン学習をやめておこうなどと怠け者になってしまうような人には向かないかも知れない。
なので、ワテのお勧めとしては、近所に教室があるならTECH::CAMPがお勧めだ。
教室が遠方なので通えないと言う人は、オンライン学習に特化したTechAcademyのコースを受講すると良いだろう。
ウェブプログラミングに特化した勉強をしたいなら、WEBCAMP ONLINEがお勧めだ。
まとめ
自称、各種プログラミング言語に精通しているワテが、人気のプログラミング言語に付いて解説を行った。
次に、主要な三つのプログラミングスクールを紹介した。
今の時代、ネットを使ったオンライン学習が簡単に出来るので、プログラムを習得したい人は思い切って申し込んでみるのが良い。
中には、無料体験コースなどが有る場合もある。
あるいは、行き成り30万円前後のコースに申し込むのが不安なら、数千円~数万円台のコースを試しに受講してみるのも良い。
それで良い感触が有れば、自分が目的とする10万円~30万円と言った高額のコースを受講すると良い。
自分に対する投資だと思えば30万円前後の出費は無駄な投資では無いと思う。
もし個人事業主として独立してフリーランスでウェブサイト構築を請け負えば、安くても数万円、普通は30万円程度の製作費で請け負う事になるから、一件受注を取れれば元が取れる計算だ。
今回紹介したプログラミングスクールの一覧
オンライン学習教室又はオンライン
DMM WEBCAMPの特徴としては、未経験や初心者の方でも3ヶ月という短期間で、高いエンジニアスキルを身に付けることができる転職・就職保証型プログラミングスクールだ。
受講完了後、3ヶ月以内に転職・就職できない場合は全額返金しています!とのキャッチフレーズなのだ。
コメント