難しいプログラミングをゲーム感覚で学べるサイト
こんにちは。引地啓です。
今回は、プログラミングを覚えるのに苦労している人に、ゲーム感覚でプログラミングを学べるサイトを紹介します。
ゲーム感覚で楽しく学べる方法ですので、プログラミングを始めたばかりという人、必見です!
ゲームで学べる!?プログラミングを学習するためのゲームサイト
プログラミングの勉強を独立で始めた人で、どう勉強したらいいか分からなかったり、環境設定が出来なかったり、難しいところが分からず先に中々進まなかったり、様々な悩みを抱えている人がいるかと思います。
そこで今回は、「初心者だけでもブラウザだけで楽しくゲーム感覚でプログラミングを学べるサイト」を紹介しようと思います。
プログラミング初心者の人や途中で挫折してしまった人、使える言語を増やしたい人は、是非参考にしていただければと思います。
①Codewars
Codewasはクイズ形式で豊富なプログラミング問題を解くことができます。レベル付けやユーザーランキングもあるので、自分の実力を試したり、より上のレベルを目指したりすることで楽しく学べます。
②コードガールコレクション
paizaが公開している「コードガールこれくしょん」略して「ガルこれ」は、ナビゲーターのキャラクターと一緒にプログラミング問題を解いて「コードガール」を集めながらストーリーを進めていくプログラミング学習コンテンツです。
ノーマルモードとハードモードがありますので、どちらもクリアして、美少女をたくさん集めましょう。笑
③CodinGame
https://www.codingame.com/start
CodinGameはビジュアルが美しく、対応言語も非常に多いゲームです。シューティングやアクション、パズルなど様々な種類のゲームをプレイできます。
難易度もトレーニングコースから応用コースまで様々なコースが用意されているので、初心者から上級者まで楽しんでプログラミングを学ぶことが可能です。
④Elevator Saga
Elevator Sagaは、JavaScriptを使ってエレベーターのアリコリズムを考えるゲームです。
「何秒間のうちに何人を運ぶ」などといった条件がステージごとに決まっているので、クリア目指してコードを追記・修正しながら、エレベーターの動きを制御していきます。
⑤RubyWarrior
https://www.bloc.io/ruby-warrior#/
RubyWarriorはRubyのコードを書いて進めるRPG風ゲームです。ドット絵が可愛く、レトロゲー好きな方におすすめです。
プログラミングでキャラクターを動かしたりストーリーを進めていくゲームはいろいろありますので、好きなゲームの雰囲気で選ぶのも楽しいと思います。
⑥fight code
http://beta.fightcodegame.com/
fight codeは、JavaScriptを使ってロボットの動作をプログラミングし、ほかのユーザーと対戦させることができます。
ゲーム内のロボットを動かしながらプログラミング強いユーザーのロボットのコードを見たりすることも可能です。自分のロボットを強くするために、勉強もはかどります。
⑦Hello World Quiz
Hello World Quizは、その名の通り、「Hello World」を出力するコードを見て、言語名を当てます。回答は三択形式で、5回間違えるとゲームオーバーです。
言語によっては似たような書き方の言語もあるので、混合したり、全然知らないレアな言語が出てきたりと、意外にはまります。
⑧CSS Diner
CSS Dinerは、CSSのセレクタを楽しんで覚えられるクイズ形式のゲームサイトです。タグを指定するだけのような基本的な問題から、徐々に難しくなっていきます。
最初の方の問題はHML/CSSを使ったことがある方なら余裕だと思います。
CSSをマスターしたい方はぜひ挑戦してみてください。難しい問題はヒントを見ることもできます。
まとめ
初心者がプログラミングの基礎を反復練習したり、簡単な問題を解いたり
少しずつ習得していくには、このようなゲーム感覚で学べるサイトも上手く使うと楽しく勉強できるかと思います。
プログラミングの勉強はすごく地味な上難しいので、飽きたり、諦めたりしてしまう人が多いと思います。
今回紹介したゲームサイトであれば、「プログラミングって楽しいな、もっとやってみたいな」ってなりながらプログラミングをしっかり学ぶことができる素晴らしいゲームだと思います。楽しく続けられることが大事です。
ぜひやってみてください!
最後まで見ていただきありがとうございます。
今後ともよろしくお願いします。
またお会いしましょう。
プログラミング入門者が知っておきたい関連用語
こんにちは。引地啓です。
今回は、プログラミング入門者に知ってもらいたい関連用語をまとめてみました。
プログラミングスキルの習得のハードルが高い原因の一つに「専門性」があると思います。デジタルの世界特有の「横文字の連続」に、多くの人が悩まさされていると思います。コンピューター自体が、英語圏で作られたものなので、プログラミング言語も横文字が多くなっています。
プログラミング入門者が知っておきたい関連用語
①サーバー
サーバーとは「サービスを提供するコンピューター」のことです。サービス(Service)を提供するサーバー(Server)です。
インターネットに繋がっている他のコンピューターからの依頼を受け付けて、対応するデータを送り返してあげたり、誰かが求めている動作をするコンピューターになります。
例えば、レストランのウェイトレスのような役割で、ウェイトレスに料理を注文すれば、その料理をテーブルまで持ってきてくれますが、注文されたことを理解して、こちらの求めている対応をしてくれるのが「サーバー」です。
②クライアント(Client)
クライアントは直訳すると依頼人サーバーがサービス提供者なら、クライアントはそれを使う人です。レストランでいうと、客です。
③ブラウザ
ブラウザとは、「インターネット上にあるWebページ情報を画面上に表示するための閲覧ソフト」です。InternetExprolerやGoogleChromeなどが例です。
ブラウザがクライアントとしてサーバーに、「このページを見せてほしい」と依頼を投げて、サーバー側は「このページの内容はこんな内容です」と情報を送り返してくれます。
④インターネット
インターネットとは、「世界中に張り巡らされたネットワークの繋がり」のことを言います。
普段使用しているブラウザは、背後にインターネットという通信網を介して、様々な情報を見せてくれています。
⑤ネットワーク
ネットワークとは、「コンピューター同士が会話できるようにしているもの」です。
⑥ISP(Internet Service Provider)
IPSとは、「有料でインターネットへのアクセスを提供する会社」のことです。
インターネット接続を行いたい人に対して、契約を行うことでサービスを提供する団体です。つまり、各人のインターネット接続を管理する団体ということです。
主なISPは、「OCN」「nifty」「So‐net」「BOGLOBE」などがあります。
⑦LAN(ラン)
LANとは、「ネットワークの種類の一つ」です。LANは会社内や家庭内でのローカルなネットワークです。
⑧WAN(Wide Area Network)
WAN(ワン)とは、「LANを繋げるための広い範囲のネットワーク」です。WANを使うためにはISPと契約する必要があります。例えば、日本国内に電話をかけられるスマホのようなイメージです。
⑨IP(Internet Protocol)
IPとは、「インターネット上のどこに存在するのかを表す住所」のようなものです。
現時点で主に扱われているものは「4つ」に区切られてた数字で表し、IPv4アドレスと呼びます。今は6つで区切るIPv6アドレスというものもあります。
例えば、IPは「はがきに書く宛名(住所)」のようなイメージです。相手の住所を書かないと届かないように、インターネット上でもお互いの住所を特定するためにIPというものがあります。
⑩Port
IPは相手のコンピューターを特定するのに使用するのに対し、Portは「そのコンピューターのサービスを特定するのに使用される数字」を指します。
ひとつのコンピューター(サーバー)の、Portで「このサービス」というように、IPとPortをセットで使用することで、相手のサービスを特定します。
IPが住所とすれば、Portは部屋番号のようなものです。
⑪URL
URLとは、「インターネット上に無数にある相手の住所を覚えやすく見やすい形で表現したもの」です。IPで表すと見づらいし覚えづらいので、URLという、人間が見て意味が分かる形でアクセスできるようにしています。
⑫プロトコル
プロトコルとは、「お互いが共通認識している規格(約束事)」です。
イメージは信号です。
⑬HTTP(HyperText Transfer Protocol)
HTTPとは、「Web上の通信のルール」です。WebサイトのURL(ブラウザ上に出ている文字列)を見ても”http”または”https”から始まっていると思います。
それはHTTPというルールに基づいてアクセスして情報をもらっているという意味になります。
⑭ソフトウェア
ソフトウェアとは「コンピューター上で動作するもの」です。
特にユーザーに様々な便利機能を提供するために作られるものをアプリケーションソフトウェアと言います。
分かりやすいのは、ゲーム機に対するゲームソフトがソフトウェアに当たります。
⑮ハードウェア
ハードウェアとは「コンピューターが動作するために必要な物理的な部分」です。
キーボードやマウスなどがこれに当たります。
ゲームでいうとゲーム機本体です。
⑯HDD(ハードディスクドライブ)
HDDとは、「データを保存するための装置」です。コンピューターは電気的な情報を使いますが、電源を落としたらその情報は消えてしまいます。そこでHDDというところに磁気データとして書き込んで、電源を切ってもその情報が残るようにしています。
机の引き出しのようなイメージです。
⑰SSD(エスエスディ)
SDDとは、役割としてはHDDと同様の位置づけになります。
SDDはHDDと違った方法(半導体素子という物を使った方法)で情報を記録するため、HDDに比べてデータの読み書きが早いという特徴があります。ただ、HDDより高額です。
⑱メモリ
メモリとは、「コンピューターの作業スペース」のことです。
机のスペースのイメージです。
⑲CPU
CPUとは、「コンピューターの頭脳(中央処理装置)」のことです。
メモリに様々なデータを展開して、それをCPUで計算、計算結果をまたメモリに戻してと、連続で計算を行っています。また各種ハードウェアともやり取りして各種制御も行います。
CPUは机で作業する人間です。
⑳OS
OSとは、システムソフトウェアと呼ばれるもので、基本ソフトと呼ばれることもあります。ハードウェアの操作を抽象的にしてくれる(人間に分かりやすくしてくれる)ものになります。
主な種類は「windows」「MacOSX」「Android」「iOS」「Unix」「Linux」などがあります。
OSのイメージは、空港の管制室のようなものです。OSが中心になって制御の指示を出したりしていて、OSの許可無しでは勝手に動いたり出来ません。
㉑テキストエディタ
テキスト(Text)をエディット(Edit)するテキストエディタとは、「文章を編集するためのアプリ」のことです。
高性能なメモ帳のようなもので、プログラマにとってテキストエディタは、料理人にとっての包丁のようなイメージです。
プログラミングなどを書くときにずっと触れているものなので、できればこだわった方がいいです。
㉒データベース
データベース(DB)とは「データをすぐに取り出せるように集めたもの」です。
例えば顧客データベースとして、会員番号、顧客の名前、メールアドレス、電話番号などが登録されている場合、一瞬で会員番号からその人の個人情報を確認することができます。
様々なExcelファイルを組み合わせているイメージです。
㉓UI(User Interface)
UIとは「ユーザー(使用者)に提供するインターフェース(コンピューターなどを操作するための方法・見た目)」のことです。
iPhoneは超高性能・喜納を持ち合わせたデジタル機器にも関わらず、とても使いやすいです。それはUIが優れているからなんです。
UFOキャッチャーがそれにあたります。
㉔GUI(Graphical User Interface)
GUIとは、「グラフィカルにユーザーが操作できるように仕組みを提供してくれること、あるいはそれそのもの」のことです。
例えば、マウスでデスクトップに置いているファイルをダブルクリックで開くことができる、という見た目で分かりやすい仕組み(操作方法)です。
コンピューターとテレビ電話しているイメージです。画面に見えるので分かりやすくなります。
㉕CUI(Character User Interface)
CUI(シーユーアイ)とは、「コンピューター専用のアプリ上で文字を入力し操作をする仕組みを提供してくれること、あるいはそれそのもの」のことです。
GUIはマウスなどでクリックしたりして、自分がやりたいことをコンピューターに伝えていましたが、CUIは文字を打つことで伝えます。
プログラミングを始める前は詳しく知る必要はありませんが、Rubyなどを本格的に使う際には必要なので、言葉として抑えておきましょう。
CUIはコンピューターとチャットしているイメージです。タイピングスピードを上げないと素早く会話が出来ません。
プログラミングで稼いでいく上で以上の用語は必ず耳にしたり目にしたりすると思います。言葉だけでも、名前だけでも覚えて帰ってね。
最後まで見ていただきありがとうございます。
今後ともよろしくお願いします。
またお会いしましょう。
プログラミング 入門
こんにちは。引地啓です。
今回なんですが、プログラミングの入門編を記事に書こうと思います。
プログラミングとは何ぞや?と思っている人もいると思うので、プログラミングの根本的な概念を説明していきます。どんなことでも、根本や概念を理解することで、本質を理解することができ、効率良く学習を進めることができるようになります。
この知識が土台となり、土台がしっかりすることで、より中身の技術が磨かれます。
その土台となる知識をしっかり身につけましょう。
プログラミングとはそもそも何なのか
コンピューターのプログラミングとは、コンピュータープログラムを作成することにより、人間の意図した処理を行うようにコンピューターに指示を与える行為です。
コンピューター上でのプログラムの意味
コンピューター上でのプログラムは、「コンピューターがするべき仕事の手順や内容が書いてある文章」という意味になります。
まず初めに何をして、次に何をして、という指示が、「コンピューターが理解できる言葉で順番通りに書かれているもの」という事です。
料理を作るレシピや仕事のマニュアルのようなものだと、イメージしやすいと思います。
プログラミングの本質
プログラミングは、「もっとこうだったらいいのに!」や「こんな機能が欲しい!」という、お願いを叶えることができる行為です。
例えばFacebookやLineなどのアプリも、「もっと手軽に友達と体験を共有したい!」とか「もっと簡単に連絡を取りたい!」という願いから、プログラミングを使って実現したものです。
プログラミングとは、コンピューターに仕事を代わりにしてもらうためのもの
プログラミングも魔法ではありませんので、何でも出来るわけではありません。
ただ、コンピューターは人間の思考速度とは比べ物にならないくらい性能を持っているので、人間では到底叶わない仕事をしてもらうことができます。
例えばTwitterでは膨大な数のユーザー登録管理・投稿の管理・投稿にいいねを付けるというような行為がリアルタイムに行われていますが、これらを人間が実現するのは100%不可能です。
コンピューターという超高速処理を実行できる道具にどう働いてもらうかを的確に指示することで、とても大きな影響力を持たせることができます。
つまりプログラミングの本質とは、人間だけでは到底叶えられないお願いをコンピューターに仕事をさせて実現することです。
プログラミング言語はなぜ必要なのか
コンピューターはすべての情報を0と1で扱っています。コンピューターが直接理解できるこの0と1が並ぶ情報を「機械語」といいます。
ただ、機械語は直接人間が見てもスムーズに理解することは不可能です。
そこで、人間に書きやすく、または機械語にも変換しやすい、いわば「中間の言語」として、プログラミング言語というものが作られました。人はプログラミング言語の書き方を覚えることで、様々な命令を表現することができるので、コンピューターに効率的に指示を出せるようになります。
プログラミング言語は、最終的にコンピューターが理解できる形の「機械語」に変換されて動作しています。
プログラミング言語はなぜ豊富なのか
プログラミング言語は、コンピューターと会話するために必要な言語です。
人間同士が会話するために使う日本語や英語などは「自然言語」と呼ばれていますが、プログラミング言語もこれと存在理由は同じです。
ただし、プログラミング言語はどんどん新しい言語が生まれてきます。
「もっと難しくても良いから、処理を早く実行できるものがほしい」
「もっと子供でも分かるように簡単に書けるようにしたい」
などと様々な思惑を持った人たちの手で、それぞれの言語が開発されているのです。
今では比較的なマイナーなプログラミング言語も合わせると、200種類以上もあると言われています。
プログラミング言語に、文法の違いはあるのか
プログラミング言語は、文法も規則的でシンプルです。例を挙げると、自然言語の場合は
画面に「こんにちは」という言葉を映してください
REFLECT HELLO
のようになります。
あくまで例ですが、ほとんどのプログラミング言語で動作を動詞と目的語の単語で表します。
動詞を先に持ってくるのは、コンピューターが主に英語圏の国で開発されたからです。
しかし、プログラミング言語はコンピューターを操作する命令を伝えるための言語です。つまり、コンピューターへの命令を正確に表現できるようシンプルに表現できるようになっています。
プログラミング言語はどんな種類があるのか
僕たちの世界では、日本人には日本語で、アメリカ人には英語で、ドイツ人にはドイツ語でというように、話す相手によって適切な言語が必要になります。
プログラミングの世界でも同様で、用途に応じて色々なプログラミング言語というものがあります。
プログラミング言語は、「C言語/C++」「Java」「Ruby」「PHP」「Python」「JavaScript」などが代表な例です。
プログラミング言語診断には「診断アプリ」を使おう
実際に、自分にはどの言語があっているのか。たくさんありすぎて選ぶのに苦労すると思います。
僕も、最初はJavaから始め、Pythonをやってみて、JavaScriptに触れて、HTMLでWebを作ってみたりしました。けれど全部中途半端になってしまっています。
皆さんはそうならないように、「診断アプリ」を使ってみてください。
初心者が最初に知っておくべきプログラミング言語は?
絶対にこのプログラミング言語でないといけないわけではありませんが、おすすめの言語は、「HTML」「CSS」「JavaScript」です。
HTMLは、Webの基礎プログラミング言語です。そしてCSSは、HTMLで作成したWebページに色付けたり、見出しを作ったりするプログラミング言語です。
そしてJavaScriptは、Webページに動きを付ける言語です。Webページに動きを付けることで、検索している人の目を引いたり、その人の行動を促す効果があります。
質の高いWebサイトを作るために必要な言語です。
プログラミング学習で得られる3つのメリット
①ITの土台は
ITの土台はもちろんプログラミングにあります。プログラミングを学ぶことで基礎的な要素は網羅できるのはもちろん、「問題的解決能力」も磨けますのでマーケティングやデザインスキルの学習スピードは格段に上がります。
この「問題解決能力」が高いと、IT以外のすべての仕事や、仕事以外のことでも共通に約立つ能力です。
余談ですが、女性は共感を求め、解決は求めないなんて言われてますね。この問題解決能力は、正しい所で使えてこそ「能力」なので、気になる女性にまで乱用しないように気を付けましょう!
②プログラミングで「ロジカルシンキング」を磨く
コミュニケーション能力は、一見プログラミングに全く関係ないように感じますが、コミュニケーションスキルの中で重要な「ロジカルシンキング」に関しては、めちゃくちゃ鍛えられます。
パソコンはロジカルの塊です。ロジックが間違った時点でエラーが出るので、ロジカルに物事を捉えられなければ解決できません。トライ&エラーを繰り返す中で確実にロジカルシンキングを身につけることができます。
③「お金を作る」プログラミングの創造性
プログラミングで学べるスキルには「お金を作る」というスキルがあります。お金を作るということは「0→1」で何かを作るということです。プログラミングは0から1を創造する思考を身につけることができます。
LineやTwitter、Facebookは十数年前には無かったですが、今や数百億というお金を生み出すプラットフォームとなっています。これらはもちろんプログラミングで作られています。
例が極端ですが、実際エンジニアの平均派遣時給は、未経験でも2400円、スキルのある経験者は5000円はくだらないというデータがあります。つまり、プログラミングスキルを習得することは、効率的な「お金を作る」手段になり得るのです。
もちろんフリーランスエンジニアになり、頑張れば高収入も目指せます。
フリーランスでうまくいけば、「自由な時間」まで手に入れることができます。
もし今からプログラミングを勉強し始める人は、何も知らない0の状態から始めるより、簡単な最低限の知識を身につけた上で始めた方が、効率良く覚えられますので、自分で色々調べるのもいいと思います。
最後まで見ていただきありがとうございます。
今後ともよろしくお願いします。
またお会いしましょう。
プログラミング教育 子供に教えるべき? プログラミングの未来を予測できるのか
こんにちは。引地啓です。
今回はプログラミング教育についての記事を書いてみようと思います。
日本でプログラミング教育は、2020年から小学校で必須化することを、文部科学省が発表しています。理由はIT人材の不足にあります。そこで小学生からプログラミングを学ばせることで、海外の企業と戦っていくための戦士を育てるつもりのようです。
この記事ではプログラミング教育の背景と海外事情をまとめました。
なぜ、プログラミング教育の背景と海外事情を知る必要があるのか
背景や海外事情に興味が無い人もいるかと思いますが、未来を読むうえで非常に重要だと考えています。
なぜなら、背景には国の動きがあり、国が動くというとこは税金が動くという事だからです。ここが一番重要です。
政治家は税金から給料が払われているから給料が高く、医者は医療費が税金で賄われるから給料が高く、メディアは国から税金で予算がおりるから給料が高いのです。
我々は税金を毎月義務で支払っていますが、内閣が「国家予算」、つまり税金の使い道を決め、財務省に申請し、それから予算案の閣議に提出され、その予算案が国会にかけられます。
この「予算」のなかにITが入るのです。なぜならITの市場を奪うことが、国の優位を左右することが分かっているからです。予算が通れば、下手すると数兆円の税金がIT業界に入ります。そして教育です。
プログラミング教育の必須化を、文部科学省が発表し、現在の小学校ではすでにプログラミング教育が始まっています。
2018年、プログラミングの授業を実施した市町村教育委員会は52.0%と、前年度より16.1%上がっています。でもまだ52%と半分なので、これからさらに上がることが期待されます。
プログラミング教育の必須化の背景
プログラミング教育の必須化を推進する背景として、Webエンジニアをはじめとする「IT人材の不足」があります。先日、先日経済産業省が発表した、IT人材の最新動向と将来推計に関する調査結果によると、2020年に36.9万人、2030年には78.9万人のIT人材が不足しています。
今後のI関連のビジネスは拡大していくと予想しています。2045年にはシンギュラリティー(技術特異点)に到達し、人口知能(AI)が人間の能力を超えると言われています。
人工知能の開発により技術発展は加速しており、今後さらに加速に加速が重なり、我々人間では想像できないスピードで技術進化が行われます。
日本は少子高齢化により、日本の経済の弱体化は確実に起こり、このままでは日本全体が衰退して貧困化する恐れがあります。そこで注目されるのが「自動化」です。
人材不足は確実なので、自動運転だったり、工場や農業も自動化だったりを国全体で進めることが大変重要なのです。
世界の先端を走る企業はIT関連であり、日本トップのトヨタも2025年に自動運転が本格化すると言われています。
まだ細かい所はありますが、つまり、今後IT市場が間違いなく拡がることで市場の取り合い、技術の戦争が加速することで、国レベルでIT人材を育成しないといけない状況で、そこに税金が投入されます。その一つが「小学生のプログラミング教育必須化」です。
プログラミング教育の必須化に向けた国内の動きと、日本教育の闇
プログラミング教育の必須化はいきなり検討されたのではありません。これまでの国の動きがあります。
まず2012年から、「プログラミングによる計測・制御」が必修になりました。
次に2013年6月に発表された、「政府の成長戦略」の中にプログラミング教育について明記されました。この中には「義務教育段階からのプログラミング教育などのIT教育うぃ推進する」という内容が盛り込まれています。
同じ頃、2013年6月に中高生向けのプログラミング教育サービスを提供していたライフイズテック株式会社と株式会社サイバーエージェントが合弁会社でCA Tech Kidsを設立し、小学生向けのプログラミング教育サービスの展開を始めました。
2015年に総務省が発表したプログラミング人材育成の在り方に関する調査研究によると、ちょうどCA Tech Kidsが設立された2013年以降から子供向けのプログラミング教育が増えているようです。
そしてついに2016年4月に文部科学省が小学校でのプログラミング教育必須化を検討すると発表されました。
文部科学省は、「小学生プログラミング教育の手引き」を作成し、2020年度からの小学生プログラミング教育の全面実施を始めました。
日本教育の闇
プログラミング教育を学校で教える、つまり税金を使って教えることは良いことです。
しかし、教える先生側がプログラミングを教えるレベルに無いため、現実はうまく行きません。
なぜなら「学校の先生」は、プログラミングを教えるために教育された人材ではなく、「テストで高得点を取ることに特化した人間」が多いからです。ここは日本教育の闇です。つまり実践が出来ない人材です。例外はいますが大多数は、「絵に描いた餅しか知らない人たち教えている人たち」から教育を受けているのが現状です。
プログラミングは、最終的には社会に実装して初めて役に立つのですが、教科書だけ読んで、プログラミングを実装したことのない先生が、教育の現場で教えているわけですので、いかにこのプログラミング教育が無謀であるかが分かると思います。
「その教育で、海外に勝てる人材って育つの?」って、思いますよね。
プログラミング教育の海外事情
海外ではすでにプログラミング教育の推進が進んでいる国もあります。一部の国の取り組みをご紹介します。
アメリカ
先ほども紹介した、プログラミング教育を推進を進めるNPO法人のCode.orgの動きが活発です。
2013年年末に公開されたキャンペーンでは、オバマ元大統領自らプログラミング教育の必要性を訴える動画が公開されたり、FacebookのCEOであるマーク・ザッカーバーグがコメントした動画も話題になりました。
また、プログラミングができると就職に有利になるということから、「コーディングブートキャンプ」とよばれる短期集中型のプログラミングスクールが急激に増えており、2015年には約200億円ほどの市場規模となりました。
シンガポール
シンガポールでは、経済の活発化を目的としてプログラミング教育が推進されています。
THE BRIDGEの記事によると、インターネット産業を担うInfocomm Development Authority of Singaporeという国家機関では、公立学校にプログラミングの授業を積極的に導入することを検討しているようです。
イギリス
イギリスは他と違って、まずは子供たちを教える先生へのプログラミング教育を進めようとしています。2014年2月に、財務長官と教育長官が、教師を対象にするプログラミングの教育訓練を開始すると発表しています。
イギリス政府は50ポンド(約8500万円)を投じて、民間の企業のカリキュラムを教師が習うということを実行しているようです。
プログラミング教育の必須化の背景から、未来を予測できるのか
プログラミング教育の背景には国の動きがあり、海外の動きがあることが分かったと思います。必要なのは、過去を知り、現状を見て、現在と繋げて未来を予測することです。
僕的にざっくり4点にまとめました。
①昔は「ものづくり」が強くものづくりが強い日本の企業が強かったのですが、コンピューターが誕生したことによりアメリカ企業が世界のトップになり、現在も続いています。
②ここ数年、ビックデータを分析できる人工知能の技術が発達し、大量のデータを収集することで効率良い運営ができたり、ビックデータを元に答えを出すAIが誕生しました。
③ビックデータは、アメリカは端末を通して、衛星で情報を収集しています。「位置情報」などがその分かりやすい例です。中国は自国の14億人から、情報を収集し、ITを駆使して、世界のトップ競争に入り込んでいます。
④日本は少子高齢化や日本教育により、圧倒的に人材不足で、かつ倫理的に道徳的に反するような情報収集を行わないこと、さらにはIT音痴の政治家が我々の税金である国の予算を動かしていることから、他国との競争が非常に不利な状況に置かれている。国の財力もアメリカや中国に比べるとかなり少ない。
これを見ると分かると思いますが、「IT業界ではすでに他国に負けている」ということです。人工知能が発達したことによりさらに引き離されていくことまで予測されています。
ここで、国単位で大逆転を目指すのには、政治家に、国会議員になって国の資産を動かせる側に立つことで、ようやくスタート地点に立てると思います。他国はとっくにスタートしているので、背中すら見えませんが。
個人に落とし込む
次に大事なのが、上のような背景を知ったうえで、自分自身の動きに落とし込むことです。
小学生からプログラミングを勉強していれば、就職するときに断然有利な環境はすでに整っているのですが、プログラミングを知らない先生から教わっても、企業の即戦力になり得ません。
大学行く人は、ほとんど塾に通っています。塾では、「テストで高得点を取る」ための学習をさらに特化させた場所で、試験に有利になるからです。
プログラミングも同様に、プログラミング塾、つまりスクールに子供の時から通うことで、企業にとっての即戦力になり、即戦力になれば給料に当然反映されます。そうすることによって、ただでさえ平均年収の高いIT企業の中でも、さらに収入を上げることができたり、フリーランスとして収益を作ることができる人材に育つことにもなります。
小学生から勉強した方が有利なことは、言うまでもありません。中学生から学んでも現代では早いくらいです。
これからIT市場が伸びること自体は誰でも予測できますが、それを個人に落とし込めないと、現実味の無い話になってしまいます。
格闘技でも、相手の動きを、未来の相手の位置を予測できれば簡単にパンチが当たると思います
あらゆる情報を見て、未来の動きを予測し、有利になるポジションをピンポイントで狙っていきましょう。
最後まで見ていただきありがとうございます。
今後ともよろしくお願いします。
またお会いしましょう。
プログラミング 独学でも効率よく学べるおすすめの勉強法
こんにちは。引地啓です。
今回はプログラミングを独学で学ぶひとにおすすめしたい勉強法をまとめました。
スクールに通う方が間違いなく効率良く学べるのですが、お金が無くてスクールに通うことができない人もいるかと思います。
独学で挫折しないために
独学で勉強するのは非常に難しく、すぐ挫折してしまう人が多いです。僕もWebで調べたり書籍を購入して独学で勉強していましたが、結構すぐに挫折しました。
しかし、独学で勉強するにもちゃんとしたやり方があったようなので、こちらにまとめてみました。是非参考にしていただければと思います。
①作業ログをGithubのlssueに残す
Githubとは、ソースコード管理を行えるソフトウェアですが、その中でIssueという掲示板のようなものがあります。
そこにどういう処理をおこなっていて、何が上手くいっていないのかを作業ログに残しておくのがおすすめです。
GithubのIssueは、簡単に言うと掲示板みたいなもので、そこに開発についてやり取りができます。それがソースコード管理システムであるGithubに標準機能として置いてあります。
https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000
Githubについて詳細に書かれた記事です。
これをやるのにはメリットが2つあります。
1つは、プログラミングの作業ログを残せるので、自分が今どのような処理をしているのか言語化しながら確認することで、状況の理解がしやすくなるという点です。
独学しているときの形跡が残せるので、後で見直すことも出来ます。
もう1つが、ツイッター上で自分のプログラムをGithubのIssueを公開しておくと、誰か優しい人がヒントを出してくれたりなどのやり取りができるようです。
②2週間で基礎は終わらせる
プログラミング基礎は、Progateでも十分に独学可能とのことです。
何か月も基礎の本をずっとやるのでは無く、Progateで学びたい言語をある程度勉強したら、プロダクトをさっさと創りましょう。
基礎だけではなく、しっかり実践を積んでいきましょう。
本は、学習を進めていく中で困った時のリファレンスとして使う側面が大きいです。
普通にプログラミングの基礎を身につけたいのであれば、実際に書きながら学べるProgateやAidemyなどのサイトを利用して、独学でやってみるのが一番早いようです。
ただ、Progateでずっとレベル上げし続けるのではなく、早く外に出た方がいいです。
③プロダクトベースのチュートリアルを行う
お勧めは、「~を作ろう!」系のチュートリアルをひたすらこなすのがよいです。
写経でもいいので、どういうアプリがどういう構造で作られているのか、どういう風に作ることができるのか、ひたすら型を学んでいく手法で、効率よさそうです。
チュートリアルをある程度こなせるようになると、ある程度この機能を実装したい!と思ったときに、過去の経験から実装することができるようになります。
Ralisチュートリアルというもので、ツイッターのクローンを作ったりできるようです。
「Ruby on Ralisでツイッターと同じ機能を持つ、クローンアプリを開発する」
「基本的はログイン機能、ツイート機能、いいね機能などを実装する」
など、Webアプリケーションを作成するうえで必要なスキルを 身につけることができるようです。
Tutorials Pints
海外のTutorials Pointsというサイトでいろいろなアプリのチュートリアルを作ることができるようです。
これを行うと、「だいたいこの機能を付けるためにはこれが必要だよね!」ってことが分かってくるので、自然とどういう風に設計すればいいのかイメージできるようになります。ただし全部英語ですので、英語に自信がある人はぜひ試してみてください。
Udemy
英語ができない!という人はこちら。日本語化されたコンテンツがあります。
Udemyの動画で、0からプロダクトを創れるチュートリアルを公開しています。
Webでは落ちていない情報がまとまっているようなのでおすすめされています。
これ以外で、日本語化されたコンテンツは圧倒的に少ないようです。動画だけだと理解できずに先に話が進んでしまうことがあるようなので、じっくり学習していったほうがよさそうです。
Qiita
Qiitaは、エンジニア向けの技術発信プラットフォームです。ここでは検索機能があり、「○○ チュートリアル」と検索すると、たまに分かりやすいチュートリアルが出てくることがあるようです。
プログラミングの学習ログとして使う人もいるようです。
Youtube
https://www.youtube.com/watch?v=F5mRW0jo-U4
・0から手を動かして作るRalisチャットアプリ【チュートリアル】
https://www.youtube.com/watch?v=WCsgcp5dg7M
・Flashチュートリアル①Pythonでツイッターの分析ツールを作ってディプロイしよう!
https://www.youtube.com/watch?v=0wHIta7cTM0
④メンターに聞きながらトライアンドエラーをする
チュートリアルをやっていると、Progateなどで学習するときと違って詰むようになります。
よく分からないエラーが出てきたり、チュートリアル通りにやってもうまくかない時に、独学だとしんどいです。僕もチュートリアルばかりやっていた時に陥ってました。
その時に、特に最初はプログラミングのメンター(指導者)が必要になります。
どのようにしてメンターを見つけるかですが、学生の場合は
「プログラミングできる自分の友達」「プログラミングを学べるインターンに行く」「有料のスクールに行く」
が鉄板。友達がいればすごくいいと思います。いない場合、プログラミングで実際に何かを作れた証拠を持ってインターンに受けに行くのがおすすめです。
上2つが無理なら、やはりプログラミングスクールに行くのがおすすめです。ここまで独学で出来たのであれば、何も知らずにスクールに行って指導を受けるよりも、確実に効率は良くなると思います。
仕事として通用するプログラミング力を得るには
仕事としてプログラミングで稼げるようになるため、以下のことが必要になってきます。
①顧客から信頼を勝ち取って、営業するスキル
②顧客の要件を定義してあげて、相手が本当に欲しいものをヒアリングする能力
③実際に成果物を作成する能力
IT系に就職を考えている人や転職を考えている人は、面接時にオリジナルアプリを作ったことがあるか必ず問われるようなので、必ず一つはオリジナルアプリをできるようにしておくと、有利に就活ができると思います。
プログラミング独学で躓くポイント
- 次に何を学べばいいか分からなくなる
- エラーが起きたときにどう解決すればいいのか分からなくなる
- 仕事を獲得するためにどういう風に営業したらいいか分からなくなる
- エンジニア採用の就職活動でエンジニアがどういう期待をしているか理解できない
独学で学んでいるとこのようなポイントで躓くようです。
ここで躓いたら、やはりスクールに通うのがベストのようです。
まとめると結局、独学には限界があることがよく分かりました。
意地で独学でずっとやっていっても、どうしても分からない部分は出てきます。分からないことに時間をかけるのは、一番勿体ないことだと思います。僕はそれならお金を払って答えをすぐに知るのが効率がいいと思っています。
それにプログラミングを身につけて就職できたら、給料で取り返せる金額なので、独学で無理と思ったら、迷わずスクールに行くのがいいと思います。
最後まで見ていただきありがとうございます。
これからも何卒よろしくお願いします。
またお会いしましょう。
プログラミング教室、スクールの選び方
こんにちは、引地啓です。
今回はプログラミングスクールについてまとめました。
「私は独学で出来る」「書籍だけで十分」なんて人もいるかもしれませんが、それはほんの一握りです。
僕のような凡人以下の人間は、優秀な指導を受けて初めて、同じ土俵に立てるものです。
スクールに通うとコストがかかりますが、時間は短縮できます。例えば、エラーが出たときや描いた通りに実行したい場合、すでに出来る人から聞いた方が、自分でずっと悩み続けるより遥かに素早く答えを知ることができるからです。
問題は、何を学ぶのか、どのような知識を身につけたいかを考えて、どのスクールに行けばいいのか、コストはどのくらいかかるのかなどをまとめました。
プログラミング教室選びのポイント
プログラミングスクールを選ぶ前に着目すべきポイントを4つ説明します。
1、オンラインorオフライン
スクールを選ぶ際に重要なのは受講スタイルです。受講スタイルには、オンライン型とオフライン型の2種類があります。自分に合った受講スタイルのあるスクールを選びましょう。
オンライン
オンラインは、インターネット上で勉強していくタイプのスクールです。自分のタイミングで学習を進められます。
時間・場所を選ばず、費用も安いですが、独学に近く、モチベーションを維持する努力が必要となります。
オフライン
実際に通学して勉強するタイプのスクールです。講師と直にやり取りができるので、その場で質問ができるなど、効果的な学習ができます。
時間や場所の制約を受けますが、同じ目標を持つ学生が集まっているのでモチベーションも維持しやすいです。マンツーマン、通い放題、オンライン併用型など、多様なサービスを用意しているスクールもあります。
2、言語で決める
スクールによって学べる言語が違います。自分がプログラミングを勉強する目的をはっきりさせ、目的にあった言語を学べるスクールを選びましょう
スクールによって「Web制作」「アプリ制作」「AI」などのコースに分かれています。
Web制作のための言語
Webサイトを作成したい人におすすめの言語は「HTML/CSS」「JavaScript」などがあります。
アプリ制作のための言語
Webアプリケーションを作りたい人におすすめする言語は「PHP」「Ruby」「Swift」「HTML/CSS」「Java」などがあります。
AI(人工知能)開発のための言語
機械学習・人工知能について勉強したいひとには「Python」「R言語」がおすすめです。
3、期間でスクールを選ぶ
スクールによって用意されている受講期間が変わります。1~6か月などの期間を設定した複数のコースが用意されているスクールが多いです。自分に合う学習時間があると思いますので、自分に合ったコースを選びましょう。
ただし、受講期間が短い場合はかなり大変なスケジュールになるので、実際に時間を確保できるかを考えて選んでください。
4、就活支援があるのか
正直ここが一番大事な所だと思います。
プログラミングのスキルを身につけたら転職したいと考えている人は、卒業後の進路のサポートをしてくれるスクールを選ぶといいでしょう。
スクールによって、料金体系やサポートの内容も様々なので、今回の比較記事で是非比べて自分に合ったスクールを探してみてください。
おすすめプログラミングのスクール8選
人気、実績のあるプログラミングスクールをまとめました。
①TechAcademy
【受講場所】:オンライン
【授業形式】:教材による学習、メンターによるマンツーマン講習
【言語】:・Ruby/Ruby on Rails・Swift・PHP/Laravel・JavaScript/jQuery・Git/GitHub
・HTML5/CSS3・SQL・Java・Unity・C#・Pythonなど
【価格】:・社会人129,000円(4週間プラン~)
・学生89,000~円(4週間プラン~)
②侍エンジニア塾
【受講場所】:・通学(渋谷)・オンライン
【授業形式】:マンツーマン
【言語】:・Swift/Android・Xcode/Monaca・HTML/CSS/JS・Ruby/PHP・Python/Java
・C++/C#・Unity・Python/TensorFlowなど
【価格】:・入塾料 1か月100,000円 ・デビューコース 1か月138,000円
・フリーランスコース 3か月378,000円 ・ビジネスコース 6か月598,000円
③TECH:CAMP
【受講場所】:・通学(渋谷、新宿、名古屋など)・オンライン
【授業形式】:・教材による学習
【言語】:・Unity・C#・HTML・CSS・Sketch・Python・Swift・JavaScript・SQL・
・Gitなど
【価格】:・入会金128,000円 ・月額料金12,800~円(初回無料)
④CodeCamp
【受講場所】:オンライン
【授業形式】:マンツーマン
【言語】:・HTML5/CSS3・JavaScript/jQuey・PHP/MySQL・Ruby/Ruby on Rails
・Java
【価格】:・Webマスターコース148,000円(2か月プラン~)
・アプリマスターコース148,000円(2か月プラン~)など
⑤ヒューマンアカデミー
【受講場所】:・通学(全国主要都市に30拠点) ・オンライン
【授業形式】:少人数で講師から直接教わる
【言語】:・Photoshop・lllustator・HTML/CSS・PHP・Java・Ruby/Ruby on Rails
・JavaScript/jQueryなど
【価格】:・Ruby on Rails講座72,000円
・Webデザイナースタンダートコース304,000円
・基本情報技術者試験対策講座・Java選択32,000円など
⑥インターネットアカデミー
【受講場所】:・通学(渋谷、新宿) ・オンライン
【授業形式】:・マンツーマン ・オンデマンド
【言語】:・HTML・JavaScript・CSS・Linux・データベースなど
【価格】:・プログラマー入門コース155,623円
・ITエンジニア入門コース252,514円
・Webサービス開発コース1,094,914円
⑦リカレントリナックスアカデミー
【受講場所】:・通学(新宿、横浜)
【授業形式】:少人数制の生授業
【言語】:・システム系(LPIC)・ネットワーク系(CCNA)・Java
・データベース系(Oracle)など
【価格】:・Linuxエンジニアコース380,000円(税抜)
・CCNA資格対策コース175,000円(税抜)
⑧WebCamp
【受講場所】:・通学(渋谷)
【授業形式】:・マンツーマン
【言語】:・HTML・CSS・Ruby・Ruby on Rails
【価格】:・WebCamp(社会人)118,000円(1か月~)
・WebCampPro6か月プログラム400,000円(学習終了から3か月で転職できなかったら全額返金)
・ママコース99,800円
ほかにも様々な教室があります。地域別でもあるので、自分で調べてみてください。
今から就活する人や、転職を考えている人などいると思いますが、平均年収500万を超えるITの企業に就くことが出来れば、一気に勝ち組へと上昇することが可能です。
価格は高いですが、初期投資と思えばそんなに高くはありません。
自分のやりたいことを優先してスクールを選ぶか、需要を優先して選ぶか、しっかり考えてみてください。
最後まで見ていただきありがとうございます。
これからも何卒よろしくお願いします。
またお会いしましょう。
プログラミング言語の選び方
プログラミング言語
プログラミングを勉強する際に「どのプログラミング言語を選ぶか」が重要になります。
JavaやPHP、C言語、JavaScriptなどのメジャーなものから、日本語プログラミング言語ひまわり、Rubyなどのマイナーなものまで、全世界で数百種類以上の言語が存在します。
その中からどの言語を選ぶかは、目的によって変わってきます
今回は、どのような目的でプログラミングを学習するのか、何を軸に言語を選択するかをまとめました。
需要でプログラミング言語を選ぶ
今、需要があるプログラミング言語を紹介します。
需要は「求人」「平均年収」「シェア」の3つの観点で考えたいと思います。
求人
まずは、とある求人サイトの求人数トップ7はこちらです。
1番はJavaが圧倒的に多く500以上の求人があります。JavaはWebから基幹システム、ゲーム、スマホアプリなどさまざまな分野で開発言語として採用されているので、どの求人サイトでも需要が多いです。
単純に求人需要と市場規模で考えれば、Javaは安定した言語です。
2番はWeb開発に欠かせないPHPで、300の求人があります。PHPは世界トップシェアのCMSであるWordPressなどでも使われており、多くのウェブサイトにも採用されているため、今後も需要は安定していると思われます。
最近シェアを広げているのがPythonで、AI開発で脚光を浴びています。
AI開発は間違いなく伸びる市場だと思いますので、Pythonは学んで損は無いと思います。
JavaScriptもサーバーサイド開発環境の充実によってWeb開発全般に活用されるようになり、需要が増えています。
平均年収
求人件数と平均年収は、必ず比例しているわけではありません。求人は少なくても、人手不足の言語や習得が難しい言語の平均の年収は高い傾向があります。
プログラミング言語別、平均年収ランキングはこちらです。
- GO(600万円)
- Scala(600万円)
- Python(575万円)
- Kotlin(575万円)
- TypeScript(575万円)
- Ruby(550万円)
- C言語(538万円)
- JavaScript(536万円)
- PHP(522万円)
求人数ではJavaが圧倒的に多かったのですが、平均年収を見ると、Go言語とScala言語が600万と、非常に高い年収です。
ただ、全体的に500万~600万円で、全体的に差が無いので、どれを選んだら良いかはっきりしないと思います
次にシェアを見ていきます。
シェア
今、エンジニアが学習している言語は以下の通りです
- JavaScript(69.80%)
- HTML(68.50%)
- CSS(65.10%)
- SQL(57.00%)
- Java(45.30%)
- Bash(39.80%)
- Python(38.80%)
- C#(34.40%)
- PHP(30.70%)
- C++(25.40%)
シェアを見ると、JavaScriptとHTMLが非常に高いです。
そしてその二つの言語と組み合わせることで、動くWebアプリを構築できるCSS言語も高いシェアになっています。
Javaも、大規模システムだったりAndroid開発にも使用するため当然高いです。
何をしたいかで、プログラミング言語を選ぶ
個人的にはここが一番重要なところで、「何を作るか」でプログラミング言語を選ぶことが大事だと思います。
まずは、一番わかりやすいものが「スマホアプリ」だと思います。スマホのアプリを作るための言語は、ベースになるOSで異なります。
スマホアプリを作る
Java、Kotlin
AndroidOS用のアプリを開発する時の定番はJava、そしてJavaベースの専用言語のKotlinです。
JavaとKotlinは参考にできる入門書籍やWebサイトがたくさんあるため、簡単なアプリを作成するには最適だと思います。
Swift
iOS、MacOSなどのApple製品で使用できるアプリを作成するための言語です。
まだまだ登場したばかりの言語です。
Webサイトを作る
PHP
PHPは、Webで動きのあるコンテンツを作るための言語として、最もメジャーな言語です。ブログなどで有名なWordPressもPHPで作成されています。
大体のレンタルサーバーに標準でインストールされており、実行環境の準備に手間がかからない点も便利な言語です。
Ruby
Rubyは、日本産の言語で、日本人にとっては多くの言語の中でも、情報を取得しやすく、習得しやすい言語です。
シェアは大きくないですが、現在はWeb開発でRube on Railsの需要が大きく拡大しています。
JavaScript
JavaScriptは、Webアプリ開発において重要な言語です。現在はサーバーサイドJavaScript実行環境や各種のライブラリが充実したことにより、Web開発全般で使われています。
モバイルアプリ開発も可能で、HTML、CSSと組み合わせることにより、インタラクティブなWebアプリが開発できるため、Webアプリ開発には必須です。
デスクトップアプリを作成する
C言語
windows向けのデスクトップアプリ開発言語としてはメジャーな言語です。
大きめなアプリを開発をするのに活用されており、Webアプリの開発でも高速性を活かして使われています。
AI、機械学習
近年急激に市場が拡大しているAI開発・機械学習のプログラムを作るには、PythonかRの2択になります。
他の言語でも作成できますが、この2つの言語には及びません。
Python
AIといえばPythonと言えるほど、ディープラーニングの分野で活躍している言語です。コードの書きやすさや読みやすさが特徴です。
Pythonは多くのOSに対応しており、クロスプラットフォーム開発にも向いています。
今後のAI市場の拡大とともに、期待も高まる言語です。
R言語
データ解析・統計プログラミングとして特化された開発された言語であり、学術や研究の分野で活用されています。
Pythonと比較しても劣らない拡張機能やライブラリが充実しています。RStudioとよばれるIDEがあるため、導入のハードルが低く、機械学習向けのパッケージを導入することで容易に機械学習環境を整えることができます。
正直、付け焼刃で書いた情報のため、よく分からないと思う人がいるかもしれません。
個人的に勉強した言語はJava、JavaScript、HTML、CSS、Pythonです。
Pythonに関しては、スクールに通って勉強してました。
この記事を見ている人で、書籍で学ぶか、Webで学ぶか、スクールで学ぶかを悩んでいる人がいるかもしれませんが、次の記事で「どこで、何で学ぶか」をまとめようと思います。
最後まで見ていただいた方、感謝申し上げます。
これからも何卒よろしくお願いいたします。
またお会いしましょう。