みほう.しん ブログ

みほうプログラミング活動記録

個人アプリ所感 && 最終課題に向けて

みほうです。

個人アプリ発表会終えて、いよいよ最終課題です。

どれほどの難関が待ち受けているのか、楽しみですね。

完成に向けて気を引き締めていきます。

 

今回の内容

・個人アプリ所感

・最終課題に向けて

それでは学んだことを書いていきます。

 

 

個人アプリ所感

 まず一言、やって良かったです。

 基本的にはRailsと要領が似通っているため、処理の流れを振り返ることができ、新しい言語を学ぶことでプログラミング言語を学ぶことの面白さを実感できました。

 ただマークアップが十分できなかったので、最終課題に取り組むことでマークアップやサーバーサイドの知識を充実させていきます。 

レイアウト

PHPフレームワークLaravel入門(以下教材)」を一読した後、bootstrapを入れてレイアウトしてみた結果

⬇️

f:id:MihouTechPeak:20190524232252j:plain

使用したテンプレートは以下のものです。

https://moozthemes.com/lattes-free-one-page-bootstrap-theme/

そのため下にスライドすればヘッダーが黒くなったり、フッターが出てきます。

フォームがありますが何も機能を持ってません。

そのため、教材で作成したアプリケーションを軸に感想を書きます。

 

PHP Laravelについて

 まずPHPについて

PHPは以下の特徴があります。

1.サーバーサイドでコードを実行しHTMLを動的に表示できること。

2.Webサービスの開発に特化。

3.データベースとの連携が簡単にでき、動作環境が作りやすい。

 

PHPの用途で一番有名なのはWordPressですね。

世界のWebサイトの30%以上はWordPressで作られているというデータがあるくらい重要があります。

 

そのフレームワークであるLaravelは以下の特徴があります。

 

1.オブジェクト指向やパッケージマネージャ(composer)といった最新の機能に加え、MVCORM(Eloquent)、テンプレートエンジン(Blade)などの機能を入れることで本格的なアプリケーション作成ができる

2.機能の実装が容易で、簡単なコードを書くだけで機能を利用できる

 

1がLaravelの最大の特徴ですね。フレームワークのいいとこ取りです。

2についてはartisanと呼ばれる独自コマンドが用意されており、ターミナル上で操作します。例えばサーバを起動するなら

php artisan serve

となります。簡単に機能を実装できるので、習得コストが少ないですね。

 

Laravelについては昨日twitterでアウトプットした図(下図)のように

他のPHPフレームワークRailsと比較してトレンドになっています。

それだけ価値のあると認められた言語でしょう。

 

 処理の流れ

処理の流れについてアドレス localhost:8000/helloを表示する場合を例に図を作成してみました。

f:id:MihouTechPeak:20190524234948j:plain


MVCモデルなので、基本的にはRailsと同様の処理を行います。*1

 

ただコントローラーの処理の前後にミドルウェアというものが入ってますね。

ミドルウェアとはアクションの処理が実行される前に指定の処理を割り込ませることが可能なものと考えています。

beforeミドルウェアにはユーザー認証といったある条件をクリアしないとリクエストを弾く処理を入れます。

afterミドルウェアにはビュー内に付け加える処理を入れます。

 

Bladeテンプレート

Laravelではビューを作成するのにBladeと呼ばれるテンプレートエンジンを使います。

.phpでもビューは作成できるのですが、.blade.phpとした方が圧倒的に作成がラクで、Laravelの設定でも.phpより優先度が高くなっています。

(例:index.phpとindex.blade.phpがあるとbladeに書いた内容だけ表示される)

 

特徴として以下のものがあります。

・テンプレートを継承して新しいテンプレートを作成することができる

@section@yieldに新規作成したテンプレートの内容をはめ込むことができる。

 

index.blade.phpについて説明のためコードを教材よりも短縮して載せます

f:id:MihouTechPeak:20190525003443p:plain

 共通のビューについてはRailsでのapplication.html.erbのように書くことができます。

継承する場合は継承先の一番上の行に@extends('継承元のファイル名')と書きます。

内容をはめ込む場合は継承元で@yield('title')とすると、

継承先で@section('title', 'Index')とするだけでtitleの持つ値がIndexになります。

データの表示は {{値・変数・式・関数など}} とし、この場合foreach文で$itemに代入されている値を一つ一つ参照し、取り出したデータ(name)を出力しています。

ちなみに/helloにアクセスした場合⬇️

f:id:MihouTechPeak:20190525004803j:plain

 他にも教材内にはアソシエーションの組み方や出力したデータの並び替え方法など一通りの機能が解説されています。

読んでおけば挫折しなくて済むでしょう。

 

今後の個人アプリでの目標としては、最終課題に取り組みつつ、まずはRailsを用いてアプリケーションを作成した後、Laravelでもアプリケーションを1から作成することです。

ポートフォリオに必要になるため成果を出していきたいです。

 

最終課題に向けて

スクラムマスターになりました。

挑戦するからには必要な機能を実装し、完成を目指します。

そのために5/25からはデータベースに必要なエンティティの洗い出し、

そしてデータベース設計ですね。

5/31のスプリントレビューまでにデプロイもできないと苦しいので、

この日までにデータベース設計、デプロイ完了が目標です。

 「チームでアプリケーション開発するということ」とはどういうことなのか学んでいきます。CADオペレーターしていた頃もチームで開発していたのですが、チームの方針に何か言える立場ではなかったため、正直楽しみです。互いの意見を拾えるようにしていきます。

 

終わりに

最近暑いですね。今日から半袖に衣替えしました。

さあ今日から最終課題の開発、Let's Go!!