3ヶ月でPHP・Laravelのキャッチアップからアプリリリースまで
PHP・Laravelのキャッチアップからアプリリリースまでどのような流れで進めていったのか記録に残します。
こんな方の参考になったら嬉しいです。
⚫これからPHP・Laravelを学習したい
⚫どのように学習を進めていって良いかわからない
⚫学習して終わりではなく、PFやサービスとしてアウトプットしたい
①学習する目的を決めよう
まずは学習する目的を明確に決める。
①今回の場合はバイクアプリを作りたい
②友人がRailsで作成したものをLaravelに置き換える
③友人が実現できなかったことも盛り込みたい
④長期的にサービスにしていきたい
大きくこの4つの目的を持って学習を始めることにしました。
なので、今回の最後に紹介するサービスのリリースまでが今回のお話になります。PF作成も基本的に同じ流れで考えられると思います。
学習の目的があるのとないとでは、学習スピードや学習効率が格段に変わります。学習の目的がないのは、目的地のない飛行機と同じです。燃料がなくなれば墜落します。目的地が分かっているからこそ途中で燃料を蓄えたり、方向を間違えずに進めることができます。学習においてもこの考え方は同じだと思っています。
②学習する方法を決めよう
学習する目的が決まったら、どのように学習するかです。
今回の僕の前提知識はRuby・Railsは少し触ったことがあるがPFやサービスを作ったことはない。という状況でした。未経験よりは少し毛が生えた段階だと思っていただくと親近感が湧くかもしれません。
加えて、これまでの学習経験から分かっている自分の特徴は、
①書籍よりも動画教材
②見て学ぶよりも、動かして納得する
の2つを満たしていると学習効率が高いと感じていたためUdemyで学習を進めることにしました。
(YouTubeの無料動画でもできなくはないと思いますがお金を払ってでも優良な情報だけに触れたかったです)
教材の選択はレビューが一番多いものではなく、友人から紹介されたコンテンツにしました。
僕はまずこの講座でPHP・Laravelの基礎を学習しました。
13時間弱の教材です。毎日ハンズオンで学習を進めていき、おおよそ4日で学習を終えました。Rubyの基礎は分かっていたのでそこをPHPの規則に置き換えるだけなのでそこまで抵抗なく進められました。
その次のこちらの教材で学習しました。
1つ目の教材で基礎は終えている前提なので、実際にLaravelでECサイトを作成していくコンテンツでした。
こちらは20時間程度の動画ですが、ハンズオンで進めていき10日ほどで終えました。正直、完全に理解して進める感じではなく、最終目的の成果物を作るために必要な知識を知るというスタンスで臨んでいました。
この学習と並行して、どのようなアプリにしたいかを漠然と頭の中で考えていました。
③学習を終えたら即アウトプット(準備編)
このアウトプットがしたくて学習をしていたと言っても過言ではないので、すごく楽しみな瞬間でした。この目的があったからこそ、短期間でキャッチアップできたのだと思います。教材を初めてからここまで来るのに3週間程度でしたのでちょうど今年からアウトプットをはじめました。
本来はあまり良くないかもしれないですが、ざっくり下記のことだけしか決めずに見切り発車でした。
バイクに興味のありそうな友人に声をかけチーム開発で進めていくことにしました。基本的に言い出しっぺが僕だと言うこととコードを書きたかったので9割くらいはコードを書いています。
事前に決めたことは、
⚫Dockerで環境構築(知識が皆無だったので構築は友人にお願い)
⚫PHP・Laravelのバージョン
⚫スタイルはTailwind
⚫DB設計(ざっくり)
⚫必要な画面
⚫実装していく優先順位
の6つを決めて進めて行きました。
細かな画面の見せ方やカラムの追加削除は相談したり、僕の独断で決めてFBをもらって修正していく、みたいな感じで進めて行きました。(本来はデザインドックや仕様書が必要)
そして、学習の途中から学んでいるコードを自分のオリジナルに拡張していこうと決めていたので、Udemyでアプリを作った大枠を自分のリポジトリに取り込んで進めて行くことにしました。(結果的に原型は数%なので自分のアプリと言って間違いないでしょう)
④アウトプット(開発初期編)
さて、ここまで学習、開発準備と進めてきたらやっと自分のアプリの作成です!(待ってました〜)
本当に心の底から楽しみにしていたので、仕事と食事、ジム以外の時間は全て注いでいた気がします。
ということで、Udemyで学んでことをとりあえず真似してみて動くものをごりごり書き進めて行きました。そのおかげで学習をはじめてから草が生い茂る毎日です。(こりゃ草刈り大変だぁ)
そんなこんなで開発をゴリゴリと進めていたのですが、途中でふと立ち止まりました。
Q.「このコードたちはイケているのか?」
A.「イケてない。」
Laravel素人でも分かるぐらいイケてないコードを書いていることに気づき、ここでコンポーネントに切り分けたり、Serviceを使ったりするように既存コードを切り替えて行きました。(このときは前に進めたい思いも強かったですが、小さいうちに直しておいた方が絶対良いと自分に命じていました。)(今のコードも見る人が見たら全くイケてはないと思います)
みたいな感じでゴリゴリ書きたい反面、これで良いのかな〜と感じつつ開発を進める開発初期でした。
※学習の裏話(一番重要)
ここで学習&開発中に思ったことを簡単にまとめておきます。
⚫完全に理解して進めるのはプログラミング学習に向いていない
⚫その場で調べて、自分のアプリに組み込むことがコスパが高い
⚫ある程度わかれば、あとは作った方が圧倒的に身になる
⚫目的からブレなければ限界突破できる
みたいなことを感じました。
要は、「絶対的な目的を見つけて動き出せ」ということです。
では本題に戻します。
⑤開発中盤
どのフェーズでも基本的にそうであるべきなのですが、ユーザーの使いやすさを一番意識したのでこの段階でした。
そもそも始めから、細かなデザインや要素の配置までこだわっていると全然進みません。とりあえず、大枠と必要な情報だけ出せれば進めていくのが良いと思っています。
そして、終わりに近づいてきた段階でその情報をどこで・どのように・どうやって見せるのかを考えて行けば良いと思います。
作る → 配置 → 整備
を切り分けるイメージです。(自分のやりやすい形をみつけると良いと思います)
個人的にはデザインを考えることも苦ではなかったので結構楽しんでできました。また、当初の予定にはなかったのですが、LPのようなページがあった方がユーザーにサービスの使い方も伝わりそうと考えて追加しました。
ここまでで、ローカル環境では基本的に動作がするようになって来ました。
具体的には、
⚫ログイン機能
⚫プロフィール機能
⚫投稿機能(バイク・道・募集)
⚫GoogleMap表示機能
⚫住所検索機能
⚫現在地取得機能
⚫マーカー設置機能
⚫コメント機能
⚫いいね機能
⚫投稿検索機能
⚫管理者権限
などの実装してきました。
⑥本番環境
そして最後は本番環境へのデプロイです。
今回はHerokuのHobbyプランを利用して、画像保存先はローカルかたS3に変更、独自ドメイン、SSL対応をしました。
ほとんど初めてのことでしたが、これまでに調べたら絶対実装できる自信があったので少し手こずることもありましたがたくさんの学びを得ながら進めることができました。
そして最後に自分のアプリのスコアを測ってみると、スマホ版は32点でした。(悲しい)
まあ何も考えずに実装したらこうなるよね。というスコアでした。
サーバー速度はHerokuなのでしかたがないとして、その他のところはコードを書き換えればリカバリーできるはずなので一つずつ改善していきました。
始めは楽しくない作業だな〜と思いながらやっていましたが、いつしかスコアを上げることに楽しさを覚え、良いときで89点が出るようになりました。(Herokuのサーバーの速度によるので平均75くらい)
まあ悪くはないでしょうというところまで持ってこれたのでいよいよリリースです。
終わりに
最後まで読んでいただきありがとうございました。
これからプログラミングを学習してみようと思っていたり、PFを作成している人の参考になれば嬉しいです。
もう少し詳しく知りたい方やエンジニア転職で困っている方はこちらまで連絡いただけるお返事させていただきます。