理解しやすいソースコードとはどういったものでしょう?
ソースコードのメンテナンス性が重要であることは多くのプログラマに認知されており、いわゆる可読性が高いコードを書くためのプラクティスはリーダブルコードや Effective XXX と言った文献で語られています。
一方、コードの可読性を語る上で重要な要素として、それを読む「人」があります。人が読み、人が理解することでコードはメンテナンスされていきます。
本セッションでは、人がコードを理解するいうことに焦点を当てて、理解しやすいコードについて考えてみます。
PHPやLaraveを業務で使っていたり、趣味で学んでいる方を対象としたIRT(Interactive Round Table)を行います。
IRTではLaravel用のテーブルと、PHP用のテーブルにそれぞれ分かれて、各技術トピックについて相談や議論を行う事を目的としてます。
各テーブルでの司会役は「Laravel.shibuya」と「Laravel.tenjin」の運営メンバーの方に担当して頂きます。
担当は以下の通りです
Laravel IRT: endu さん
PHPとJavaScriptを書いています。
SNS:https://twitter.com/Fendo181
PHP IRT: kunit さん
GMOペパボ ホスティング事業部 / 単なる旅行好き
SNS:https://twitter.com/kunit
IR20分、休憩5分を3セット行います。
10:30~10:50 IRT 1回目
10:55~11:15 IRT 2回目
11:20~11:50 IRT 3回目
※途中開始時間が前後するかもしれませんがご了承下さい。
なお、IRT中での入退室は自由になっております。
気軽にご参加下さい。
事前に募集もしますが、当日テーブルに来てその場で相談して頂いても問題ございません。
カンファレンス期間中も当然ですが、IRT中も他の参加者へのご迷惑となる行為はしないようお願いいたします。
(以下の内容はあくまで予定している内容です。当日の進行状況によっては内容が変更になる可能性があります。)
このワークショップでは、Laravelのソースコードリーディングやモブプログラミング(※1)を通じてLaravelのライフサイクルやLaravelの様々な機能、テストコードの書き方などを学びます。
Laravelのライフサイクルについてソースコードをベースに解説していきます。
ライフサイクルについて詳しくなると、Laravel本体のある程度詳細な知識が身につきます。
これによって、エラーの原因の切り分けが早くなったり、Laravelの機能をカスタマイズするための学習がしやすくなるなどの効果が見込めます。
あらかじめこちらで用意しているアプリケーションに機能を追加実装する過程で、様々なLaravelの機能を活用していきます。
Laravelを使って開発するのであれば絶対に知っておきたい便利な機能を学んでいきます。
大きなディスプレイに開発画面を写し、みんなでわいわい実装していきます。
特にシナリオは用意していないので、新たに機能を実装するもよし、既存の機能をより良いコードにリファクタリングするもよし、その場のノリで楽しみましょう。
モブプログラミングを通してエラーの潰し方やデバッグ方法などが学べる予定です。また、自分以外の人がプログラミングをする最中に考えていることを知れる貴重な機会になると思います。
※1
モブプログラミングとは、みんなで1つの画面を共有しながらわいわいプログラミングすることです。
交代で一人ずつドライバーとなりドライバーの人が実際にプログラミングを担当します。
周りの人はドライバーの人にアドバイスをしながらみんなで協力をして実装を進めていきます。
開発チームも大きくなり、関係メンバーが増えてきたため、柔軟にプレビュー環境を立ち上げるツールの紹介をします。
同時並行でPRが立ち上がるため、GitHubのコメントドリブンでPRごとにプレビュー環境が立ち上がるものとなっています。
ROXXでは事業部が2つあるのですが、それぞれの開発環境に最適化したプレビュー環境の作り方を紹介します。
Laravel5.6をベースとした、オープンソースのWebデータベース「Exment」を開発しました。
本セッションでは、Laravelのメリット、LaravelをベースとしたOSSを開発する場合のメリット、注意点などをご紹介します。
また、Exmentの製品のご紹介を行います。
「AWS Fargate の上で PHP (Laravel/Lumen) でAPIを提供する」
「Amazon API Gateway 経由で Lambda Function を Web APIとして提供する」
巷ではよくあるパターンですよね。
ではみなさん、これらを組み合わせて使ったことがあるでしょうか?
実際に使ってみると、たくさんのメリットがあったのでご紹介します。
※ Lambdaの話は出てきません
LaravelをハブにしてAWSの様々なサービスを利用してサービスを段階的に成長させていくことについて話します。
Laravelを使っていればご存じの通り、ArtisanはLaravelのCLIインターフェイスです。
その中にはさまざまなサブコマンドが用意されていますし、ユーザーが拡張できるようにもなっています。
Artisanそのものがどのように構成されているのか、そしてそれぞれのサブコマンドがどのように実装されているかについて解説します。
フルスタックWebフレームワークLaravelの最大の特徴はEloquent。
Eloquentを制するものがLaravelを制するといっても過言ではありません。
Laravel利用者同士であれば、Eloquent Modelをどう使うか、太りがちなロジックをどう整理するかなどなど、Eloquentの話だけで一日中語り尽くせることでしょう。
最近のカンファレンスのLaravel系のトークでは、Laravel利用者が成熟してきたせいか、アーキテクチャや設計論が目立ち始め、Eloquent Model自体への評価は下降気味だと感じています。
曰く、Eloquentはやんちゃが過ぎるのでリポジトリに閉じ込めるべきである、ORMの"Model"クラスとは別のPOPOのクラスをドメインモデルとして使うべきである云々。
本トークでお伝えしたいのは、我々が普段書いているEloquent Modelのコードと、カンファレンスで話される理想的な設計の話は地続きであり、決して雲の上の出来事ではないということ。コードの良し悪しはとあるアーキテクチャやパターンを取り入れるかどうかのゼロイチで決まるものではなく、その間にある無数のトレードオフに目を向けることが大事だということ。
目の前にある泥臭いLaravelアプリケーションのコードと付き合いながら、設計について考えていきましょう。
● お話しすること
● お話ししないこと
P.S. Laravel中〜上級者の皆様へ
リポジトリパターンやクリーンアーキテクチャは本当に必要ですか?
それらが利用される本当の目的を理解して利用していますか?
POPOが正義でしょうか?
Eloquentは力をセーブさせざるを得ない悪い子でしょうか?
本トークを通じて、Laravelを使い始めた頃に感じていたEloquentの万能感を、ぜひ思い出していただければと思います。
現在のLaravelは近年の多くのPHPフレームワークと同様にComposerを基盤として構成されており、Packagistに登録された多数のPHPライブラリと簡単に相互運用できるようになっています。
この発表ではComposerの基本機能およびLaravelとComposerの関係、そしてComposerの設定方法などをまとめて解説します。
PHPの25年の歴史にはさまざまなフレームワークがありましたが、現代と過去を分ける一つの画期として「Composer以前/以後」があります。Laravelをはじめとして、近年のPHPフレームワークとライブラリはすべてComposerを基盤にして相互運用できるように構成されています。
この発表ではComposerとPHPの機能の関係およびLaravelがComposerをどのように使っているか、そしてWebアプリケーションを本番環境で運用するためにComposerの観点からどのように注目するかについて解説します。
僕たちが提供したいのはその技術では無く、その技術が実現する価値です。
その価値提供にFull Serverlessなシステムは非常に高い効果を発揮します。
運用レスを目指してFull Serverlessなサービスを作成し、その中での知見を共有します。
■対象
Serverlessに興味がある人
■お話すること
個人開発でLaravelを使ったあるWEBアプリケーションを開発しています。
開発をする際にLaravelを使ってみてとても便利だなと思った点や、使いやすかった機能など色々と勉強になった点がたくさんありました。
このトークではその便利だと思った点、使いやすかった機能を、Laravelを扱ったことのない人にもわかりやすいように、簡単なCRUDアプリのコードを通して、余すことなく紹介できたらいいなと思っています。
ステートレスなHTTPをステートフルに変えてくれる仕組みがセッションです。ユーザのログイン、リダイレクト後のエラーメッセージの表示、CSRF対策等、現代のウェブアプリケーションで多用されているセッションですが、セッションがどのように動いているかと聞かれた時に正しく答えられますか?
初心者に近いPHPerがセッションを多用すると、中堅クラスのエンジニアから「セッションは危ないから多用しないように」とアドバイスされることも多いと思いますが、それは何故でしょうか?
本トークでは、ウェブアプリケーションにおけるセッションについて、その正体を分かりやすく解説します。また、セッションの正体を知ることで、ウェブアプリケーションのアーキテクチャーに対してセッションが及ぼす影響についても解説します。セッションにまつわるアレコレを解説することで、初心者とベテランエンジニアの間に存在する知識と経験の差を少しでも埋めることが狙いです。
このトークでお話すること
Docker Hubは、Dockerが提供してくれるコンテナレジストリです。
Laravelをすぐに実行できるコンテナを自作して、Docker Hubに登録すると、開発・CI・CD・本番運用までの開発フローが単純になって良いことばかりです。
そんなDocker Hubのオススメの使い方を紹介します。
PHP7.4から、OPCacheにpreloadという新しい設定が加わりました。この設定を利用すると、既にOPCacheを利用しているアプリケーションでも、動作速度を10倍[注1]に上げることが出来ます。
本トークでは、OPCacheの基本からおさらいし、preloadの機能を丁寧に解説した上で、Laravelで利用する場合の利用法や注意点を紹介します。
また、実際に本番で運用する際の、サーバー構成やデプロイの注意点もまとめます。
このトークでお話すること
対象者
[注1] DB接続等のIOバウンドな処理が含まれない場合に限る。
PHP7.4から、OPCacheにpreloadという新しい設定が加わりました。この設定を利用すると、既にOPCacheを利用しているアプリケーションでも、動作速度を10倍[注1]に上げることが出来ます。
本トークでは、OPCacheの基本からおさらいし、preloadの機能を丁寧に解説した上で、Laravelで利用する場合の利用法や注意点を紹介します。
また、実際に本番で運用する際の、サーバー構成やデプロイの注意点もまとめます。
このトークでお話すること
対象者
[注1] DB接続等のIOバウンドな処理が含まれない場合に限る。
Serverless PHP は作れる
Serverless Laravel といえば Laravel Vaporを思い浮かべる人が多いのでは無いでしょうか
Laravel Vaporが作れる様にAWSのArchitectureを正しく理解していればServerless PHPは作れます
今回はLaravel Vaporが担っている基本要素を自ら構築してみようと思います
本セッションを通してServerless Architectureの知見が広まる事を本セッションを目的とします
■聴講者ターゲット
■お話する内容
■お話しない内容