個人アプリ所感 && 最終課題に向けて
みほうです。
個人アプリ発表会終えて、いよいよ最終課題です。
どれほどの難関が待ち受けているのか、楽しみですね。
完成に向けて気を引き締めていきます。
・個人アプリ所感
・最終課題に向けて
それでは学んだことを書いていきます。
個人アプリ所感
まず一言、やって良かったです。
基本的にはRailsと要領が似通っているため、処理の流れを振り返ることができ、新しい言語を学ぶことでプログラミング言語を学ぶことの面白さを実感できました。
ただマークアップが十分できなかったので、最終課題に取り組むことでマークアップやサーバーサイドの知識を充実させていきます。
レイアウト
「PHPフレームワークLaravel入門(以下教材)」を一読した後、bootstrapを入れてレイアウトしてみた結果
⬇️
使用したテンプレートは以下のものです。
https://moozthemes.com/lattes-free-one-page-bootstrap-theme/
そのため下にスライドすればヘッダーが黒くなったり、フッターが出てきます。
フォームがありますが何も機能を持ってません。
そのため、教材で作成したアプリケーションを軸に感想を書きます。
PHP Laravelについて
まずPHPについて
PHPは以下の特徴があります。
1.サーバーサイドでコードを実行しHTMLを動的に表示できること。
2.Webサービスの開発に特化。
3.データベースとの連携が簡単にでき、動作環境が作りやすい。
世界のWebサイトの30%以上はWordPressで作られているというデータがあるくらい重要があります。
そのフレームワークであるLaravelは以下の特徴があります。
1.オブジェクト指向やパッケージマネージャ(composer)といった最新の機能に加え、MVC、ORM(Eloquent)、テンプレートエンジン(Blade)などの機能を入れることで本格的なアプリケーション作成ができる
2.機能の実装が容易で、簡単なコードを書くだけで機能を利用できる
1がLaravelの最大の特徴ですね。フレームワークのいいとこ取りです。
2についてはartisanと呼ばれる独自コマンドが用意されており、ターミナル上で操作します。例えばサーバを起動するなら
php artisan serve
となります。簡単に機能を実装できるので、習得コストが少ないですね。
Laravelについては昨日twitterでアウトプットした図(下図)のように
他のPHPフレームワーク、Railsと比較してトレンドになっています。
それだけ価値のあると認められた言語でしょう。
あとLaravelがPHPの世界の中でどれだけ伸びているか
— みほう.しん@TECH::EXPERT卒業生 (@MihouTechPeak51) 2019年5月23日
GoogleTrendsで調べました。
WordPressへの需要もあるのか急激に伸びてて驚きました😲
グラフは3年前から今までを集計しています。
Ruby on Railsよりも遥かに多いですね。#Laravel #PHP #テックエキスパート pic.twitter.com/2c0hWvuNbO
処理の流れ
処理の流れについてアドレス localhost:8000/helloを表示する場合を例に図を作成してみました。
MVCモデルなので、基本的にはRailsと同様の処理を行います。*1
ただコントローラーの処理の前後にミドルウェアというものが入ってますね。
ミドルウェアとはアクションの処理が実行される前に指定の処理を割り込ませることが可能なものと考えています。
beforeミドルウェアにはユーザー認証といったある条件をクリアしないとリクエストを弾く処理を入れます。
afterミドルウェアにはビュー内に付け加える処理を入れます。
Bladeテンプレート
Laravelではビューを作成するのにBladeと呼ばれるテンプレートエンジンを使います。
.phpでもビューは作成できるのですが、.blade.phpとした方が圧倒的に作成がラクで、Laravelの設定でも.phpより優先度が高くなっています。
(例:index.phpとindex.blade.phpがあるとbladeに書いた内容だけ表示される)
特徴として以下のものがあります。
・テンプレートを継承して新しいテンプレートを作成することができる
・@sectionや@yieldに新規作成したテンプレートの内容をはめ込むことができる。
index.blade.phpについて説明のためコードを教材よりも短縮して載せます
共通のビューについてはRailsでのapplication.html.erbのように書くことができます。
継承する場合は継承先の一番上の行に@extends('継承元のファイル名')と書きます。
内容をはめ込む場合は継承元で@yield('title')とすると、
継承先で@section('title', 'Index')とするだけでtitleの持つ値がIndexになります。
データの表示は {{値・変数・式・関数など}} とし、この場合foreach文で$itemに代入されている値を一つ一つ参照し、取り出したデータ(name)を出力しています。
ちなみに/helloにアクセスした場合⬇️
他にも教材内にはアソシエーションの組み方や出力したデータの並び替え方法など一通りの機能が解説されています。
読んでおけば挫折しなくて済むでしょう。
今後の個人アプリでの目標としては、最終課題に取り組みつつ、まずはRailsを用いてアプリケーションを作成した後、Laravelでもアプリケーションを1から作成することです。
ポートフォリオに必要になるため成果を出していきたいです。
最終課題に向けて
スクラムマスターになりました。
挑戦するからには必要な機能を実装し、完成を目指します。
そのために5/25からはデータベースに必要なエンティティの洗い出し、
そしてデータベース設計ですね。
5/31のスプリントレビューまでにデプロイもできないと苦しいので、
この日までにデータベース設計、デプロイ完了が目標です。
「チームでアプリケーション開発するということ」とはどういうことなのか学んでいきます。CADオペレーターしていた頃もチームで開発していたのですが、チームの方針に何か言える立場ではなかったため、正直楽しみです。互いの意見を拾えるようにしていきます。
終わりに
最近暑いですね。今日から半袖に衣替えしました。
さあ今日から最終課題の開発、Let's Go!!