【大阪】Laravel LT 2019/01/25に参加してきました!


Photo by chuttersnap on Unsplash

先週の金曜日1月25日に、関西Webアプリ作ろう会さんで開催された【大阪】Laravel LTに参加していきました!

今回は実際に参加してみた感想や、当日の内容についてシェアします!

実際のイベントページはこちら(終了しています)

関西Webアプリ作ろう会とは?



引用元:関西webアプリ作ろう会

普段はいくつかチームを組んで、実際に何かアプリを作ったりなどのハッカソン形式のイベントも開催しているグループのようです。

また、Laravelについてのイベントも開催されています。

関西webアプリ作ろう会グループはこちら

スポンサー紹介



引用元forkwell公式サイトより

会場のスポンサーは、エンジニアの転職やスカウトサービスforkwellを運営されている、株式会社groovesさんです。

株式会社groovesさんは、「ヒトと会社に、きっかけを。」を理念に活動されています。

当日はサービス名「forkwell」名義でスポンサーをされていました。

ありがとうございます!!

各LT内容紹介

ここで軽く、各LTをしてくださった方の内容を紹介します。

・鈴木さん:JWTは認証について
・西澤さん:LaravelのCollectionについて
・嘉数さん:LaravelのTelescopeについて
・上平さん:GraphQLについて

鈴木さんのLT



当日の資料より

鈴木さんは株式会社Re:Buildの代表取締役を務めている方で、JWTについてLTしてくださいました!

株式会社Re:Buildの公式サイトはこちら

JWTとは?

JWTとはJSON Web Tokenの略で、ジョットと読むそうです。

JWTの利点は、電子署名がついているので改ざんされないということがメリットです。

SPAでのログイン認証の時などに使用されるそうです。

ちなみにSPAとは、Single Page Applicationの略です。

JWTのメリット

JWTのメリットは、次のようなものがあるとのこと。

・URLのパラメーターやヘッダーとして使える。
・水平のスケールが容易
・デバッグと管理が簡単
・トラフィックに対する負担がすくない
・本来のRESTサービスを作成嘉納
・ビルトイン式の有効期限機能がついている
・JWTが独立型であること

個人的に、デバッグと管理が簡単なのは良いなと思いました。

実際のログインフロー

実際のログインのフローは下記のような流れのようです。

トークン発行前のフロー

1.ユーザーがIDとパスを入力
2.Laravel側でトークンを発行して、localStrageに設定
3.ログイン後のページにリダイレクト

トークン発行後

1.localStrageにトークンがあるかチェック。なければ、ログイン画面へ
2.トークンをAuthorization(オーソライゼーション)ヘッダーに設定
3.ヘッダのトークンを使ってLaravel側で処理
4.ログイン後のページへリダイレクト

JWTをLaravelに組み込むフロー

JWTをLaravelに組み込むには下記のフローを踏んでいくようです。

1.認証機能を作成
2.jwt-authをインストール
3.Employeeモデルの修正
4.guradを修正
5.Api Controllerの作成
6.api.phpの編集

参考にされたサイト

最後に参考にされたサイトを紹介してくださいました。

実際に参考にされたのは下記2記事とのこと。

Qita:Laravel + Jwt Auth で認証付きWebAPIを作る

isaax camp:JWT、JSONウェブトークン

鈴木さんのLTの感想

鈴木さんのLTの感想は、僕自身SPAとかは作ったことがなかったので、認証する時はこういう風に認証をするのかと勉強になりました!

JWTは見たことがありました、ジョットと読むのも知りませんでした。

また、JWT方式にはどんなメリットがあるかなども知れてとても良かったです!

LTして頂き、ありがとうございました!

ちなみに、登壇の資料は下記のリンクから見ることができます。

当日の資料はこちら

西澤さんのLT



引用元:株式会社Nextatの公式サイトより
西澤さんは株式会社Nextatの代表取締役を務めている方で、LaravelのCollection(コレクション)についてLTしてくださいました!

株式会社Nextatの紹介ページはこちら

株式会社Nextatの公式サイトはこちら

LaravelのCollectionとは?

Laravelの公式ドキュメント(日本語)によると、下記のように記載されています。

Illuminate\Support\Collectionクラスは配列データを操作するための、書きやすく使いやすいラッパーです。以下の例をご覧ください。

Laravel 5.7 コレクションより

LaravelのCollectionとは、普通の配列と違って->(アロー)を使って配列を操作することができます。

公式サイトでは、下記の例が記載されています。

でも、普通だと配列を作ってforとか使って、upper(アッパー)関数を使って処理するというような感じになります。

LaravelのCollection便利!!

ちなみに、LaravelのCollectionには次の2つの種類があるそうです。

1.EloquentのCollection
2.SupportのCollection

Eloquentについて

Laravelの公式ドキュメント(日本語)によると、下記のように記載されています。

Eloquent ORMはLaravelに含まれている、美しくシンプルなアクティブレコードによるデーター操作の実装です。

Laravel 5.7 Eloquent:利用の開始より

つまりEloquent(エロクウェント)とは、データベースからデータを取得する処理を直感的でわかりやすい記述で行うことができます。

例えば、データベースからすべてのデータがほしい時は、下記のように記載します。

また、where句をあわせて色々条件を絞ったりする時は、下記のように記載します。

EloquentのCollectionについて

Eloquentはデータベースからデータを取得する処理を、直感的でわかりやすい記述で取得するもの。

Collectionは、配列を直感的でわかりやすい記述で処理するものでした。

EloquentのCollectionは、直感的でわかりやすくデータを取得してきて、そのデータを加工できる方法ということになります。

実際にEloquentのCollectionは、ModelベースのCollectionという風に紹介されていました。

EloquentのCollectionの便利なところ

西澤さんのLTでは、EloquentのCollectionの便利なところは、型指定でタイプヒントができるところという風に紹介されていました。

ちなみに、タイプヒントとは引数などの型を指定することができるものです。

タイプヒントを使うことで、引数とは違う型が来た時にエラーを出すことができます。

また、タイプヒントを使用することでわかりやすいコードにすることができます。

他にも、Model周りに最適化されたメソッドが使える。

ModelのIDで管理できる。

といったことができるとのことです!

SupportのCollectionのについて

EloquentのCollectionは、ModelベースのCollectionということでした。

では、SupportのCollectionはというと、Model以外のCollectionのことです。

つまり、Modelに関係するCollectionはEloquentのCollectionを使用。

それ以外のCollectionについては、SupportのCollectionを使用するということ。

西澤さんのLTの感想

西澤さんのLTの感想は、やっぱり型指定するのって大事なんだなあということでした。

僕自身型指定がある言語をあまり触ったことがないので、型指定の重要性をあまり認識できていません。

ただ、最近だとTypeScriptでJSを書くと言ったように型指定の重要性をよく耳にするので、今後は意識して書かなければと思いました。

また、今回のLTについて改めて整理することで、タイプヒントによってエラーを出すことで予期せぬバグを防げそうとか、Collectionってこういうことなのかと改めて勉強になりました。

LTして頂き、ありがとうございました!

嘉数さんのLT



当日の資料より

嘉数さんは株式会社Re:BuildでWebエンジニアとして勤務されている方で、LaravelのTelescopeについてLTをしてくださいました!

株式会社Re:Buildの公式サイトはこちら

ちなみに、株式会社Re:Buildはリモートワーク、自由な働き方を推奨しているとのこと!!

LaravelのTelescopeとは?

LaravelのTelescope(テレスコープ)とは、Laravelの公式が推奨しているデバッガアシスタントとのこと。

使えるバージョンは5.7.7以上で動作するようです。

LaravelのTelescopeについてはこちら

LaravelのTelescopeでできること

LaravelのTelescopeを活用することで、いろいろな情報を見ることができます。

例えば次のような項目を見ることができます。

・送信されたリクエストの詳細
・例外処理の内容
・データクエリなどなど。



画像引用元:登壇資料より

インストールするには、下記のコマンドを実行してインストールします。

インストールした後は、「http://ドメイン名/telescope」にアクセスすると画面が表示されます。

LaravelのTelescopeが解決できそうなこと

LaravelのTelescopeが解決できそうなことは次のようなことがあるのではないかと、LTの紹介されていました。

・ステージング環境のログをSSHでログインして、LaravelやWebサーバのログを取得しなくて済む。

・どのユーザーがどんなパラメーターを付与されて、どこにアクセスしたかのログをいちいちdumpしなくて済む。

・DBクエリで何が実行されているか確認するために、dumpしなくて済む。

LaravelのTelescopeを使う時に気をつけること

LaravelのTelescopeの仕組みとしては、Laravelが入っているデータベースに新しくTelescope用のデータベースを作成。

そして、ログの詳細などをそこに書き込む処理を行っているようです。

そのため、次のようなことに気をつける必要があるとのこと。

・本番環境では間違っても利用しない。(composerでステージング環境のみに設定ができるとのこと。)

・アクセス制限と機密情報の扱いに注意。

・DBを圧縮するので、定期的にリフレッシュ処理をかけること。

嘉数さんのLT感想

LaravelのTelescopeとても便利そうだと思いました。

確かに、わざわざSSH接続してログを確認しにいくのとかすごくめんどくさいことですし、実際のデバッグとかはこういう風にやっているということが知れてとても良かったです!

また、本番環境の時にどうするのかなども、後の質問タイムで出てきて、それについて知ることができたので良かったです!

LTして頂き、ありがとうございました!

ちなみに、登壇の資料は下記のリンクから見ることができます。

当日の資料はこちら

上平さんのLT



当日の資料より

上平さんは合同会社ピクセルグラムの代表取締役を務めている方で、GraphQLについてLTしてくださいました!

合同会社ピクセルグラムの公式サイトはこちら

GraphQLとは

GraphQLとは、Facebookが開発した、データ問い合わせと操作のための言語とのこと。

GraphQLについてはこちら

最大の特徴はAPIのエンドポイントが1つなのが特徴。

ちなみに、エンドポイントとはAPIにアクセスするためのURIのこと。

RestのAPIだと、URIが下記のように返ってくる処理に対して決められています。

http://api.example.com/service/api/blog/users/:id(書いた人で絞り込み)

http://api.example.com/service/api/blog/apple/users/:id(ある特定のカテゴリで書いた人の絞り込み)

http://api.example.com/service/api/blog/apple(カテゴリーのみでの絞り込み)

数が少ないとまだわかりやすいですが、大規模になってくると色々管理が大変になってきます。

GraphQLを使うとURIのエンドポイントを1つにして、フロント側でどんな情報がほしいか指定することができます。

http://api.example.com/service/api/blog

これによって大規模になってくると大変だったエンドポイントの管理が、フロント側で処理を作ってバックエンド側に投げる、という形になるためわかりやすくなるとのこと。

LTで紹介されていたパッケージについて

上平さんがGraphQLを使う時に使用していたパッケージは次の2つ。

・Lighthouse
・laravel-graphql-playground

Lighthouseについて



引用元:Lighthouseの公式サイトはこちら

Lighthouse(ライトハウス)とは、GraphQLのエンドポイントをLaravel側から使用できるようになるパッケージのこと。

Lighthouseの公式サイトはこちら

laravel-graphql-playgroundについて


引用元:laravel-graphql-playgroundより

laravel-graphql-playground(ララベルグラフキューエルプレイグラウンド)は、ブラウザ側からクエリなどを書いて実行して確認できるパッケージ。

これがあることで、一度ブラウザ側で処理の内容の確認やどんなデータが帰ってくるかなどを見ることができるパッケージのようです。

インストールした後に「http://ドメイン名/graphql-playground」にアクセスすることで確認できます。

laravel-graphql-playgroundについてはこちら

上平さんLTの感想

GraphQLというものをそもそも聞いたことがなかったので、こういうものがあると知れてとても良かったです。

僕自身、エンドポイントがたくさんあるAPIやシステムを触ったことはありません。

でも、GraphQLはGithubやTwitter、PayPalなどで取り入れられているようなので、API系を使うとなった時にチャレンジしてみたいと思いました。

LTして頂き、ありがとうございました!

GraphQL導入企業一覧はこちら

ちなみに、登壇の資料は下記のリンクから見ることができます。

当日の資料はこちら

まとめ

参加することで、流行の技術やデバッグツール、Laravelについて知ることができてとても良かったです!

普段はコミュ障で、交流会とかは孤立することがほとんどです。。。

でも、参加者の方が優しく会話に混ぜてくれたり、頑張って話しかけると色々とお話させて頂いたりと参加してよかったと思いました!

当日お話して頂いた方や登壇者の方、会場の準備などしくださった方ありがとうございました!

今回お話できなかった方とも、また色々お話できたら嬉しいです!

各LTの内容をちゃんと理解できたかは、まだわかりませんが間違った箇所とかあれば指摘して頂ければと思います!

ありがとうございました!

この記事を書いた人

南 健太郎

1991年生まれ。都内でエンジニアをしています。
このブログでは、個人開発や日々の技術に関する情報などを発信していきます。