たぶんこれがいいんじゃないかと思う未経験からプログラミングを勉強する方法の1つ

## 背景

私自身、まだプログラミングなんで全然未熟な身分だが、
2,3年前の自分の能力から現在の自分の能力まで至った経験から、
**たぶんこれがいいんじゃないかと思う未経験からプログラミングを勉強する方法**の1つを紹介しようと、
突然おもったからなのです！

（私、Rubyが一番得意ですが、歴史が巻き戻ったら多分PHPやるかもなので、それを想定した学習方法です）

## まず！プログラミング言語の存在意義を知る

WEB上のサービス限定の話ですが、
**基本はHTMLとCSS**なんです。
ただ、**リアルタイムで内容を変更したり、サービスを使う人によって表示内容を変えるため**に、RubyとかPHPとかPythonがあるんです。

つまり、HTMLとCSSだけじゃ、永久に内容が変わらないWEBサイトしか作れないのです。
したがって、HTMLとCSSとあと何か1つ（RubyとかPHPとかPython）を勉強する必要があります。

## 決意！じゃあRubyとかPHPとかPython、あといろいろあるがどれを選べばいいのか

私が今考える答えはPHPなのです。
理由は、**簡便さと仕事の多さと言語特性**。

- 私の情報網なので貧相ですが、PHPプロジェクトにかかわる人数はRubyの10倍くらい。
- JavaよりもPHPの方がタイピング文字数を少なく表現できる
- pythonはどっちかというとデータ解析系の能力が高い言語

なのでPHPかなという考えです。
**これは人それぞれ違う考えを持っている**のであまり突っ込まないで下さい。

では**なぜ私はRubyを選択したかというと、近くにとてもいい先生がいたから**です。
なのでそういった特別な事情があれば、選択は変化します。

## 気持ち！言語を決めたらモチベーションを高める

仮にPHPに決めたとします。
ではPHPで作られた世の中のサービスを見てみましょう。

こちら（https://employment.en-japan.com/engineerhub/entry/2017/04/07/110000 ）を参考にみてみると、

- メルカリ（https://www.mercari.com/jp/ ）
- Retty（https://retty.me/ ）
- CAMPFIRE（https://camp-fire.jp/ ）
- Schoo（https://schoo.jp/ ）

早々たるラインナップです。
言語PHPに不足はこれっぽっちもありません。
**あとは己がPHPを操る能力**ということがわかります。

## 注意！挫折するポイント

そしてモチベーションあがっても挫折します。
挫折するポイントは、

- 開発環境の構築
- 実際にWEB公開していないので実感わかない
- なんかパッとしないWEBサイトができてテンションさがる
- 簡単目の課題はできるが、そのあと何したらいいかわからん

あたりだとおもいます。
なので私の場合こうしたらいいんじゃないかという以下の勉強ストーリーをイメージしました。

## 1. 環境構築はしない

**環境構築は実際難しい**ので、せずにプログラムできる方法を選びます。
たぶんcodeanywhereがいいんじゃないかと思います。
https://codeanywhere.com/

使用方法については`codeanywhere 使い方 PHP`でググるのが良いと思います。

## 2. PHPじゃなくいきなりCakePHPに行く

いきなりCakePHPってなんだと思われるかもしれないですね。
CakePHPはPHPをつかって高速でWEB作成を行うための型（フレームワークと呼ばれたりします）のようなものです。
PHPコードの自動作成の機能も持っています。
**実際のプロジェクトでもたくさん使われています。**

フレームワークにはCakePHP以外にもたくさんありますが、**なぜCakePHPなのかというと、日本語の情報が多いから**です。
調べても英語サイトしかなかったり、文献が少ないフレームワークを選ぶと挫折率が高くなるような気がします。

※英語勉強してからアメリカいくか、アメリカいってから英語勉強するかのような考え方に似ていると個人的に思っています。

ドットインストール（https://dotinstall.com/lessons/basic_cakephp_v2
）を参考にcodeanywhere上でコーディングしていくのがいいと思います。

※プレミアム会員にならないと一部コンテンツが見れないので、**しっかりと期間を決めて**やることをお勧めします。

## 3. 完成したらHerokuで全世界に公開し、twitterでつぶやく

ドットインストールの見よう見まねな感じでコーディングが完了したら、Herokuというサービスを使って**全世界にWEB公開**しましょう。そして友達に**twitterでそのサイトURLを伝えましょう**。
結構テンションあがりますよ。

HerokuでのWEB公開の仕方は、`Heroku PHP 公開`でググるのが良いと思います。

## 4. これが1からWEB公開までの流れなのかと実感する

自分自身で公開したWEBサイトをみながら、その第一歩を改めて実感してみましょう。
そして、**自身が描いたコードを少しづつ複雑にしていくことの繰り返しが、最初に公開したメルカリやRettyに近づいていく方法**だと思っています。

## 5. そしてこのタイミングでProgate

世界へのWEB公開が完了したら、**次はしっかりと基礎**を身に着けていきましょう。
あの有名なProgate（https://prog-8.com/ ）で、

- HHML, CSS
- Javascript
- PHP

これをざっと勉強しましょう。
しかもこれは**Progate上ではなく、codeanywhere上**で勉強するのが良いと思います。

## 6. そしてCakePHPの本を買う

購入の際は以下のポイントをすべて満たしているのが最低条件です。

- 本屋は自分がしっている中で一番大きい本屋
- できるだけ薄い本
- 発行年数が2年以内
- 本のストーリーが、なんらかのWEBサイト作成の流れで、最後に1つの作品が出来上がること
- 学習ストレスがかからない程度に、日本語文字数が少なく、字が大きく、絵が多い（PHPコードはいっぱいあっても大丈夫）

これを満たす本がなければ、CakePHPという選択を変えるべきかもしれません。

そして本にそってcodeanywhere上で作成していき、WEB公開します。
これですでに2作品目です。

すると、なんとなくCakePHPで書いたコードの意味が分かってくると思います。

## 7. そして自らに課題を課す

課題としておすすめなのが、チームラボオンラインスキルアップ（https://team-lab.github.io/skillup/ ）のSTEP1とSTEP2です。

これをcodeanywhere上で作成していき、WEB公開します。
これで3作品目です。

## 8. そして次はinstagramっぽいサイトを目指す

いままでは本屋や課題にそって進めていましたが、今度は現実に存在するサイトに近いものを真似してつくってみましょう。
これが4作品目となります。

**同レベルのものを作るのは難しい**ので、

- 画像投稿機能があること
- SNSログイン機能があること
- マイページがあること
- 友達申請ができること
- 投稿にコメントできること
- デザインがそれっぽいこと

あたりが大まかな目安です。

## 9. そしてオリジナルを作る

ここまできたら、自分の作りたいものが、心の中で思い浮かんでいるかもしれませんね。
それを作ってみましょう。
これが**栄光の5作品目**です。

## 最後に

私はおおよそこの流れでRubyを勉強しました。
すばらしい先生の助けもあり、なんとかコーディングを継続できました。


ですのでもしPHPでなくRubyを選んだ方で躓いているのなら私に連絡をください。可能な限り問題解決に協力したいです。

またPHPを選んだ方からも質問を受けれるレベルになるよう、引き続きPHPも勉強していく所存です。
ググりかたを記載しただけで、具体的な参考サイトは記載できていないので、まだまだ情報が足りていないと思っています！

長くなりましたが、もし時間が巻き戻ったら私がPHPを勉強する方法のお話しでした！