どーもパブロ(@culionlifehack1)です。
プログラミングを学習したいという方は、ますます増え続けており、職務上の習得以外でも趣味や、自己研鑽として注目されています。
そんな中で、指導者のいない方にとってありがちなのが、「何からはじめたら良いのか分からない」というものです。
プログラミングが入門者にとってハードルが高い理由は、学習形態と学ぶべき内容が体系化されていないからです。
学習目的に応じて、選ぶべき言語や、習得すべきレベルも異なります。
ここでは、右も左も分からない入門者が、具体的な学習に移る前に、まずはプログラミングの大枠を把握して、初めに自分が何をするのかを整理するための情報をまとめています。
目次
①フロントエンド
まずはフロントエンドと呼ばれるものです。
こちらは、ウェブサイト、アプリのレイアウト(見た目)を表現するための知識です。
つまり、これらをマスターすれば、なんの機能もありませんが、世の中にある、ウェブサイトの見た目はすべて真似できるのです。
サイトをデザインする為の、知識だと理解しておきましょう。
厳密にはこれらはプログラミング言語ではありません。
しかしフロントエンドエンジニアが存在するぐらいですから、立派なプログラミング知識だと思いますし、いくらサーバーサイドに特化したエンジニアでも基本であるHTMLやCSSの知識が全くないというのも、あまり聞きません。
また、覚える内容も限られているという意味でも、私は入門者の学習目的が何であれ、初めに理解すべき内容がHTML、CSSであると考えています。
HTML
HTMLとは、Hyper Text Markup Language(ハイパーテキスト・マークアップ・ランゲージ)の略で、Webページのレイアウトを作るためのマークアップ言語です。
マークアップと言われる通り、自分の記載内容に対して「ここはタイトルですよ」「ここは見出しですよ」「ここは引用ですよ」と言った具合にPCが理解できるように印をつけてあげるというのがわかりやすいでしょう。
CSS
CSSとはHTMLで記されたページを装飾するための技術(言語)です。
先ほどHTMLで記した、「ここはタイトルですよ」という目印に対してCSSは「赤色で目立つように表示しよう」「文字も大きくしよう」など、人が見たときに、より見やすい様に装飾することができます。
bootstrap
BootstrapはもともとTwitter社が開発したWEBオープンソースのフレームワークです。
フレームワークという言葉自体の理解が難しいと思いますが、Boostrapを簡単言えば、
「みんなが共通してよく使う、ボタンやレイアウトのテンプレートを準備しておいたから、好きに使ってね」ということです。
もちろんHTMLとCSSを使えば全て自分でも実現できますが、例えば、レスポンシブデザインと呼ばれる、PC、スマホなど様々な大きさの画面によって最適な表示を行う技術は、自分で全て実装しようとするとなかなか複雑です。
しかし、Boostrapのグリッドと呼ばれる概念を使えば、非常に簡単にレスポンシブデザインを実装できます。
そのほか使い方は様々ですが、こちらも勉強されることをオススメします。
②サーバーサイド
こちらが、俗に言うプログラミング言語と呼ばれるものです。これを扱えるようになることで初めて、「プログラミングができる」という認識で良いでしょう。
しかしこのサーバーサイドは、言葉の通り、サーバーとの情報のやり取りを通じて、処理を行う部分になるので、理解、習得にはフロントエンドとは比にならないくらいの、学習コストが求められます。
また、言語自体も非常に多く存在しすべての言語を扱える開発者はいないです。
現役のエンジニアでも、得意分野を完璧に使いこなせることは稀です。
調べながら自力でなんとか問題を解決出来るレベルが、一人前の基準です。
現在主流の言語を目的に応じて以下に羅列すると、、、
Ruby
ウェブアプリケーション(サービス)を開発する際に選ばれる言語です。
日本人が開発者の言語であり、プログラミングを楽しむことを目的に設計されています。
特徴はRuby on Railsと呼ばれるフレームワークを利用することで作業効率が高く、近年は開発スピードや効率が求められる小規模ベンチャーやスタートアップからも注目される言語です。
PHP
こちらもウェブサイトやサービスの構築に使用される言語です。
ブログサービスのワードプレスもこの技術によって作成されており、個人ブログの本格的なカスタマイズなどが目的の場合は、こちらがおススメです。
現在、ウェブ上に存在するサイトの開発言語で1番多いのが、このPHPを用いたサイトだと言われており、Rubyと比較して、過去からの長い実績がある言語と言えるでしょう。
その分、コミュニティの広さや、情報量も充実しています。
どちらが良いかという議論によくなりますが、結論として、両者が出来る内容に違いはありせん。
Java
オブジェクト思考と呼ばれる言語の代表で適応範囲が非常に広いです。
WEBサービスからAndroidアプリまで、その汎用性から求人等も非常に幅広くあり、利用者も多いです。
逆に本当の独学の場合は、その汎用性の広さが仇になることもあります。
最近のトレンドとして、WEBサービスの開発にはRubyを教える講座が多いです。
万が一ギブアップした時に、スクールに通うなど学習の逃げ道があることは初心者とって重要です。
JavaでWEBサービスの開発のコースというのは、初心者向けのスクール等では少ない気がするので、今後、何かに頼ることも含めて目的に応じた言語の検討が必要です。
swift
iOS(iPhone)アプリに特化した言語だと考えておきましょう。
開発環境もXcodeなど、特定のものがありますので、他に選択肢がないという意味で、個々のバックグラウンドに関わらず、やるべき事が明確で、わかりやすいでしょう。
逆に言えば、汎用性が低く、プログラミングの中でも少し特異な言語ではあると思います。
Python
元々、人口の少ない言語ですが、近年の人工知能ブームでとにかく、注目を浴びている言語です。
コードがシンプルで数的処理に優れており、現在のAI関連のプログラミングはこのPythonに支えられているといっても過言ではありません。
画像処理や、音声認識などAIを含んだ開発であればPython一択でしょう。
③フレームワーク
Boostrapの説明でも記した通り、プログラミング言語にもフレームワークと呼ばれるものがあります。
ライブラリと呼ばれる概念と混同しがちですが、今はまだそこの区別をする必要はありません。
実際に使って見ないと、言葉では理解しにくいからです。
覚えておくべくは、有名な言語にはこのフレームワーク(共通の枠組み)が存在しており、これらを利用することで、Boostrap同様、開発を極端に単純化することができます。
どの言語を選んでも、表現できることは共通していますので、このフレームワークの利便性が、言語選択にも多く影響していることも事実です。
「Ruby on Rails」
「Ruby」のWEBフレームワークです。
上述の通り、その開発効率や利便性に優れており、「Ruby on Rails」を使うためにRubyを選択することがあるくらい強力なフレームワークです。簡単なブログや、SNSの基本構造ならなれた人なら数時間で作成できるほどです。
「CakePHP」
「あらゆるレベルのPHPユーザが、素早く快適に開発を行える事」を目的として産み出されたPHPのWEBフレームワークの代表です。
「Spring Framework」
「Java」で開発を行う際に広く利用されているWEBフレームワークです。
ここでは代表的なものしか取り上げていません。
基本的には選択した言語のフレームワークを使うしかないのですが、何度も述べた通り、このフレームワークが便利だからという理由で、言語を選択するぐらい開発においては重要な位置付けとなります。
④開発を支える技術
プログラミングは言語以外にも開発の上で必要な技術がたくさんあります。
下手な例えですが、料理をする際にクックパッドをみて、食材だけを準備しても、実際には包丁やザル、お鍋、皮むききなど別で準備をしなければなりません。
それと同じ様に、プログラミングも開発から公開にはプログラミング言語以外に必要な付属技術があります。
それぞれ目的の異なる技術をここに並べるのは少し乱暴ですが、各技術の代表的なサービスをピックアップしました。
他にも種類があるので、興味があれば調べてみてください。
とりあえず、開発から公開の一連の流れには言語の習得以外にもこんな技術が必要なんだな。という理解でOKです。
開発、バージョン管理
Gitと呼ばれるサービスの代表がGitHubです。
これは開発の段階ごとにセーブをしておけるものだと思ってください。
開発でトラブルがあったときに、前回のセーブポイントに戻ることができます。
また、Git自体は他者の開発プログラムが公開されているため、利用者同士で内容を見ることができます。
登録や有料化の必要がありますが非公開にすることも可能です。
現在はGitHubはマイクロソフトに買収されました。
本番環境
作成したサイトをWEBに公開する作業をデプロイと呼びます。
開発環境と本番環境は異なり、環境の設定やサーバーの準備やドメインの登録が必要です。
それを無料で支えてくれるのが「heroku」というサービスです。
herokuでも公開が可能ですが、必要に応じて他社サービスのドメインに変更が可能です。
サーバーも運用状況に応じてアップグレードが可能です。
個人の小規模サイトであればherokuでも十分な運用が可能だと思います。
データベース
データベースとはサイトで扱うユーザーの個人情報や製品の詳細情報の塊だと思ってください。
それをエクセルにまとめた様なものです。
一覧の中から必要な情報だけを抽出したりと、WEBサービスの開発には欠かせません。
WEBサイトではこのデータベースを活用するために、コーディングをしていきますが、データベースは開発環境とは別の場所に保管する必要があります。
その保管場所や命令を出すシステムがSQLと呼ばれる技術です。
MySQLなど複数の種類があります。
開発環境
プログラミング言語や、使用する環境によって、開発の初期設定が異なります。
料理をする際に、前提として流しや、コンロが必要ですよね。
それも中華料理、鉄板焼きなど料理によって必要な厨房の設備は異なるのと同じです。
自分で、厨房を準備するのは大変な様に、初心者にとってはプログラミング以前にこの環境設定が困難です。
ということで、誰かが厨房を貸してくれたら楽ですよね。
それを実現するのがクラウド上で一括し,開発環境を提供してくれるのが統合開発環境(IDE)と呼ばれるものです。
エディタやサーバー、デバック、共同開発など様々な機能を提供してくれており、すぐにプログラミングが可能です。
Cloud9 は、AWS(Amazon Web Service)の提供する統合開発環境 (IDE) です。
JavaScript、Python、PHP、Ruby、Go、C++ などの動的プログラミング言語に必要なソフトウェアとツールを提供しています。
まとめ
初心者にとっては聞きなれない言葉や学習量が多く、戸惑うことも多いでしょう。
しかし最近ではどれも無料でトライできるものが多く、開発において金銭的なリスクを背負うことはほとんどありません。
まずは、HTML,CSSの学習から入って、その後、サーバーサイドの勉強及び、実際の開発環境でコーディングを試してみましょう。
具体的な目的がないのであればとにかく、触って見ること。ダメなら白紙に戻せば良いだけです。
プログラミング学習はトライアンドエラーの繰り返しです。
かといって、独学で世に出ている様な素晴らしいサービスを生み出すのはやはりハードルが高いのも事実です。
まずはトライが重要ですが、独学で行き詰まった場合や、すでに目的がはっきりしている場合にはスクールなど、お金を出して学習することがやはりゴールへの最短距離になることは間違いないと思います。
プログラミングって何から勉強すればいいの とりあえずプログラミングを体験したい 勉強にお金をかけず独学したい …
前回、初心者向けのプログラミング学習としてProgateを紹介しました。 プログラミング初心者に絶対にProg …
どーもパプロ(@culionlifehack1)です。 プログラミング必修化によって、小学生をはじめとする低年 …