個人アプリ 製作方針
みほうです。
現在、5/24の個人アプリ発表会に向けてPHP Laravelを勉強しているところです。
応用カリキュラムのChatSpaceについては期日(5/17)までに終えることができてよかった😌
Slackの個人チャンネルで完了報告した後、LGTMもらって嬉しくなったと同時に自信が増しました。
さて今回は以下のことについて書いていきます
・個人アプリ初期案
・PHP Laravelについて
・応用カリキュラムを終えた感想
よろしくお願いします🙇♂️
個人アプリ初期案
現状達成が難しいです。
理由はPHP Laravelの進捗が予定よりも遅いためです。
そのため、今回の発表会ではPHP Laravelの機能紹介で、アプリケーションについては少し触るぐらいと考えています。
この初期案に沿ってアプリケーションを作ってみます。
考えているのは「忘れ物チェック・検索アプリ」です。
設計案
必要な機能
・USERがログイン/ログアウト/サインインできる。
・USERが自分の持ち物(belongings)を投稿できる。
・USERが持ち物を名前で検索できる。
・USERが持ち物を編集・削除できる。
追加したい機能
・持ち物に筆記用具や貴重品といったタグを決めることができる。
・名前だけでなくタグでも検索できる。
・チェックリストでチェックすることができる。
データベースの仕様
テーブルについてはusersテーブル、belongingsテーブル、tagsテーブル、commentsテーブルとし、
usersテーブルには名前やメールアドレスといったユーザーの管理情報
belongingsテーブルには持ち物の名前の管理情報
tagsテーブルには持ち物のタグの管理情報
commentsテーブルには持ち物につけたコメント(名前だけではわかりづらいため付随情報としてコメントを付ける)の管理情報
正直データベース再考した方がいいと考えています。作りつつカラムを編集していきます。*1
トップページ画像
トップページはこのようにします。
PHP Laravelについて
個人アプリにおいてはPHP Laravelと呼ばれるPHPフレームワークの学習に取り組んでいます。教材としては「PHPフレームワーク Laravel入門」を使っています。
インターネットの情報だけで作ろうとはしたのですが、 断片的で繋がりがなく、本を買って勉強することにしました。
先ほど述べたように今の所遅れています。5/20時点でp.161まで完了したのですが、これからアプリケーション製作と考えると、発表会は機能紹介中心になりますね。
PHP Laravelを勉強する理由
自分が今回の個人アプリでPHP Laravelを勉強しようとしている理由は以下の3点あります。
1.PHPフレームワークの中で現在一番伸びているフレームワークであるため。
2.Rails同様MVCモデルで作られており、Pythonよりは入りやすいと感じたため。
3.社長さんから「サーバーサイドの開発言語にはPHPを使っている」と聞いたため。
順番に説明します。
理由1.
PHP Laravelは2012年にリリースされた、PHPフレームワークの中では比較的後発のフレームワークです。
それがリリースされて以後、急速に発展しています。*2
日本ではこれまで2005年にリリースされたCakePHPの需要が高く、社長さんの会社でもCakePHPを使っているとは聞きました。
ただ現在一番伸びているPHPフレームワークであるため、自分はPHP Laravelを勉強します。
ちなみにフレームワークというのは「最初からセキュリティ、保守・保全、拡張性が保証され、誰が作っても再現できるシステム」のことだと考えています。
Railsもそうだと考えます。rails newするだけで、最初からルーティング、コントローラ、ビューのファイルが入って、学習すれば誰もが教材を再現できる代物ですからね。
今考えているアプリケーションも自分の理解度を考えればRailsで作った方がラクなのですが、PHPといった他の言語も学べばプログラミング言語を学ぶことがより楽しめます。
現にRubyとPHP、条件分岐のif文や繰り返しのwhile文など似ている部分もありますので違う言語に触れてみると面白いです。
理由2.
PHP Laravelを利用してて、腑に落ちたのがRailsと同様MVCの流れに沿っていることです。
MVCとはアプリケーションフレームワークで使われるアーキテクチャで、アプリケーションをModel-View-Controllerの各機能に分けて整理します。
Modelはデータベースに関する処理全般を担当します。
Viewは画面表示を担当します。
Controllerは全体の制御を担当します。Modelとやり取りしてデータを取得したり、Viewを利用して私たちに返す画面を作成します。
PythonのフレームワークDjangoではこれがMVTと呼ばれるModel-View-Templateから成るモデルになります。
ややこしいのはViewの役割がMVCと異なることで、RailsでいうViewはDjangoでいうTemplate、DjangoでいうViewはRailsでいうControllerとなります。
勉強しようとしても違いがとっつきにくいと考えました。
実際PHP Laravelを勉強してみて、処理の流れがRailsと似ているので作りやすいとは思いました。
Bladeテンプレートなど新しいワードも出てきますが似た部分も多いため、特に不便なく学習しています。
理由3.
個人アプリで勉強する言語はサーバーサイドの言語と最初から考えていました。
マークアップはbootstrapやjQueryライブラリと考えていたためです。
Python、Go、PHPを基礎だけProgateで学習した後、どれをやろうかと迷い祖母の知人の社長さんに「会社でのサーバーサイドの開発言語は何を使っていますか?」と聞いてみたところ、「PHPを使っている」と返ってきたため、PHPにしました。
最終的には社長さんの返答が決め手となったわけです。
勉強してて思ったのが、1つの言語を学ぶと似た表現が他にもあるなと思ったところです。そういった点ではRuby on Railsを用いたアプリケーション作成を勉強してきたことが役立っていると思いました。
応用カリキュラムを終えた感想
twiiterでも話していたように続けてこれたのはカリキュラムの製作手順に沿ってGitHubに適宜コミットしたり、OneNoteに記録し続けたことが大きいですね。
記録を見返すことで過去にどんな手順を辿ったか振り返ることができますから。
一番苦戦したのはインクリメンタルサーチのイベントの発火部分です。
動画↓
https://i.gyazo.com/221ca3a1bb53bea92a4e4586332b22ef.mp4
フォームに名前を入力しても出てこない、追加ボタンを押したところで名前が追加されない、チャットメンバーに追加できても更新ボタンを押すとテーブルに保存されないといった問題が発生し、それらの修正に時間をかけました。
問題の解決に役立ったのがbinding.pryやconsole.log( )ですね。デバッグツールであり、binding.pryではコントローラで正しく値を受け取っているか見て、console.logではイベントが正しく発火しているか引数に値を入れて確認しました。
ディスカッションでdebuggerという処理を止めてデベロッパーツールのConsoleで処理を書いて値が正しく受け取れているか確認するツールも知ったので、イベント設定時はそれも使っていきたいと思いました。
始めてから15時間くらいですかね、終わったのは。
終わった時は「やっと終わった〜」と安堵しました。
ChatSpace作ってみて、アプリケーションの設計・開発・公開(デプロイ)の流れを出来て役にたつと思いました。
以上です。個人アプリ発表会に向けて準備していきます。
次回のブログでは学習したことの復習として、PHP Laravelについてより詳しく話します。
ありがとうございました。