Laravelサービスコンテナ/Context Switch/Nuxt.jsでCognito 2020/2/8【コミット会報告】

コミット会

この記事は、2月08日都内某所で行われた、IT学習の継続を目的とした勉強会
(通称:コミット会)のレポートです。

参加者と発表内容

  • YUUKI
    • Laravel サービスコンテナの仕組みについて
  • Moby
    • Linux の Context Switchについて
  • Takuto
    • Nuxt.jsでCognito
  • Tanaka
  • Kudo

YUUKI 発表内容の目次

  • MVCフレームワークのおさらい
  • Laravelサービスコンテナ

MVCフレームワーク

MVCフレームワークのModel,View,Controllerの流れをおさらいしました。
MVCを用いたWebアプリケーションに、ユーザーがブラウザでアクセスすると、MVCの挙動は以下のように遷移します。

  1. ブラウザ
  2. Routing(パスを元に、呼び出すControllerとViewを割り振る)
  3. Controller(アクションを呼び出す)
  4. Model(DBから値を引っ張る)
  5. DB
  6. Model(DBから取った値をControllerへ返す)
  7. Controller(値をViewに返す)
  8. View(コントローラの値を元に、画面出力する)
  9. Controller(Viewの値をブラウザに返す)
  10. ブラウザ

以下の図が分かりやすいと思います。

出典:https://qiita.com/bitcoinjpnnet/items/47e6e9b8c4c2c19fd917

Laravelサービスコンテナ

Laravelの重要な仕組みであるサービスコンテナについて説明しました。
サービスコンテナは、Laravelの様々な機能である「サービス」を保管する箱です。そして、そのサービスをサービスコンテナに登録する為に「サービスプロバイダ」を使います。
サービスコンテナの利点は、オブジェクトの依存性を解決することです。

簡単な例を挙げます。例えばクラスAとクラスBがあり、クラスAはクラスBに依存するとしたら、先にクラスBをインスタンス化し、次にクラスAをインスタンス化する必要があります。
この依存関係をサービスコンテナが解消します。具体的には、サービスコンテナに属するbindメソッドを用いて、サービスコンテナを登録します。そのあとに、makeメソッドでバインドしたサービスを呼び出し(リゾルブ)することによって、クラスの依存性を解決します。

分かりやすい説明がこちらに載っているので参考にしてみてください。
Laravel サービスコンテナの理解を深める

僕はこの仕組みを思いついたLaravelの開発者は天才だと思いました。

Moby 発表内容の目次

Context Switchとは

コンテクストスイッチ。
実行するプロセスのコンテクストをCPUが切り替えること。

そもそも、CPUが同時に実行できるプロセスは1つしかない。
実行プロセスを瞬時に切り替えることで、複数のプロセスを同時に処理しているように見せている。

各プロセスには、CPUのContextというものが紐付いている。
プロセスが使用したレジスタやフラグなどのCPUの状態のことをContextと呼ぶ。
このContextを切り替えることをContext Switchと呼ぶ。

プロセスの切り替えをサポートするためには、プロセスごとにContextの保存領域を確保し適切なタイミングでコンテクストを切り替える必要がある。

プロセスの切り替えタイミング

  1. プロセスがスケジューラに割り当てられたCPU時間を使い切ったとき
  2. プロセスがIO待ちでCPUを手放したとき

Takutoの発表

Nuxt.jsでCognito

今回はNuxt.jsでCognito認証をやってみた、というのを発表しました。
実は実装で仕切れていないので、まだアウトプットできていないので、
完成次第、ブログにしていきたいなと考えてます。

Nuxt.jsって?

Nuxt.jsとはVue.jsのフレームワークです。
かなり簡単にWebアプリケーションを作成できる代物です。

Cognito

CognitoとはAWSが提供する認証基盤のSaaSです。
ユーザ名、メールアドレス、パスワードなどのあらゆる情報を保持してくれます。
さらにはAWS SDKを使用することで自身で作成しているWebアプリケーションに組み込むことができます。

Cognitoを使って嬉しいことは、「ログインユーザにIAMロールを付与できる」という点です。
つまりログインユーザに対してS3の権限などを付与できます。よって、公開していないバケットの画像などをユーザに見せることができます。

今やっていること

現在は上記のCognitoとNuxt.jsを組み合わせようとしています。
ログイン画面はサクッとできたので、あとはS3読み込むだけのはずっ!
また次回発表します!

この記事を書いた人

元専業アフィリエイター。
2019年にプログラマーに転向し、受託開発企業からキャリアをスタート。
使用言語は主にPHP。SwiftやFlutterにも興味有。

Yuukiをフォローする
コミット会
Yuukiをフォローする
技術ブログ東京

コメント

タイトルとURLをコピーしました