「Laravel開発者の負担・工数を減らす」を掲げて、約10ヶ月前にリリースした「 LaravelDB.com 」。誰もが無料でお使いいただけます。
ER図を書けばそのとおりのMigration(最新バージョンではテーブル設計どおりのValidationも生成します)ファイルが生成されます。ER図は保存が可能なので、何度でもER図を呼び出して変更加えたり、コピーして別のプロジェクトを作成することも可能です。このツールの勘所を端的に解説する予定です。操作方法を知って少しでも楽に開発ができるように、少しでもLaravel開発者の皆さんの手助けになれば幸いです。
Track ID: Track4-1-B
Discord Channel: #track4-1-b-laraveldb-com
私達は玩具サブスクリプション・レンタルサービスの「トイサブ!」を運営しております。
2015年にサービスを開始し、2020年11月末時点で7,000名以上のお客様に、月間2万点近くのおもちゃをお客様ごとにカスタマイズして選定・お届けをしております。
日頃開発で活用させていただいているPHPに対して、これからを担う子どもたちがPHPに対してどのような考えを持っているのかを語ってもらいました。
Discord Channel: #sl-toysub
コネヒトはこれまでテクノロジーやエンジニアリングの力を使って成長してきました。
しかし、事業を更に成長させるためにはその流れをより速く、より強く、よりクリアにする必要があると考えました。そこでコネヒトのエンジニア組織 / 技術領域において、今後何を大事に何に投資していくか未来の構想や方向性を「Connehito Tech Vision」としてまとめました。
本LTでは、そんなConnehito Tech Visionの概要をお話させていただきます。
Discord Channel: #sl-connehito
ホワイトプラスが展開するネット完結型クリーニング「Lenet」のシステムでは、エンジニアが開発に集中できるように開発環境を整備しています。
本セッションでは、そのための工夫をいくつかお話しします。
Discord Channel: #sl-whiteplus
Fusicは福岡のIT企業です。
弊社ではエンジニアの技術力向上のための制度が積極的に活用されており、その制度が評価され、この度エンジニア・フレンドリーシティ福岡の企業部門で受賞いたしました。
全国各地からの採用を積極強化中なのですが、いかにFusicがPHPerのみなさまにとって働きやすい、成長出来る可能性を秘めた会社なのかを東京から移住した私が徹底的にアピールします。
採用目的です、皆さま積極的に選考へご応募ください!
Discord Channel: #sl-fusic
AWS lambda上でbrefを用いてPHP8を実行するまでを説明いたします。IAMユーザの作成からdeployまで駆け足で伝えます!
Discord Channel: #sl-alleyoop
Shadowverseはサービス5年目を迎えました。そして10年、20年続くコンテンツへと成長させていくため今なお進化を続けています。
長年の運用でゲームアップデートを繰り返す中、デバッグコストの肥大化・コードの属人化が進んでおり、「最高のコンテンツ」として高品質なアップデートを続けていくため、テストを活用したリファクタを行いました。
5年アップデートを続けてきたコードをバグなくリファクタするのは容易なことではありませんが、リファクタに寛容なプロジェクトや会社のバックアップもあり、無事にテストを導入し、ほとんどバグを出さずに一機能のリファクタをやり遂げました。
しかしこれは「一機能のリファクタにテストを導入した」だけであり、プロジェクトの成長の1歩目に過ぎません。
テストの有用性をメンバーが理解し、実際にテストを書く文化が根付いて初めて、今後も高い品質で更新を続けられるプロジェクトに進化したと言えます。
本セッションでは、「長期運用中の大規模プロジェクトコードに対しテストを導入する切り口・手法」及び「プロジェクトにテスト文化を根付かせるプロセス」について紹介します。
Track ID: Track1-2
Discord Channel: #track1-2-cygames
年末から年始にかけて開始予定のウェブ・セキュリティ実務知識試験(徳丸実務試験)とPHP8上級試験の解説をいたします。徳丸実務試験に合格して徳丸皆伝ステッカーをもらおう。稟議に使えるPHP市場データも解説。
Track ID: Track2-2-A
Discord Channel: #track2-2-a-tokumaru-exam
Google Cloud Platform(GCP)ではPHPを動かす環境がたくさんあります。
Google App Engine(GAE)だけでも3パターンあり、
他にもGoogle Compute Engine(GCE),、Google Kubernetes Engine(GKE)、Cloud Run があります。
この発表では、それぞれの環境でやれること、メリットデメリットについてお伝えします。
また、どういう考えで環境を選ぶかというプロセスを実体験を交えながら、ご紹介します。
Track ID: Track3-2-A
Discord Channel: #track3-2-a-gcp
弊社のシステムはバックエンドのフレームワークは Laravel を使用、そして OpenAPI と呼ばれる API の設計書を書けば CRUD に対応した API が自動的に実装されるような仕組みを用いて自動生成し、最後にバリデーションを書けば、一つの API が完成します。
もともと弊社の社内システムは SaaS 上にしかなかった、かつバックエンドエンジニアが私一人である中で、どう効率的にゼロベースからプロダクトを組み上げてプロダクトのローンチを早められるかが鍵でした。
CRUD に対応した API 実装、正常系・異常系テストの生成自動化、API のドキュメントの記述、全文検索エンジンへどう自動的に繋ぎこむか、例外処理はどうするか?といった全ての事情を汲み取りながら基盤開発に邁進し、
今では一つあたりの API の実装は 10 分もかからないレベルになりました。本トークでは、この基盤の構築をした経験を元に、考えてきた事、実行してきたこと、判断に迷ったこと、そして Laravel を使った実装についてのお話をできればと思います。
Track ID: Track4-2
Discord Channel: #track4-2-laravel-openapi
JSON は現在の Web アプリケーション開発では一般的なデータフォーマットです。PHP でも json_encode() や json_decode() といった関数が用意されており、多くの方が日々の開発で利用されているでしょう。
実務上はこうした関数もしくはラップされたクラスを利用すれば良いのですが、仕様がシンプルではありつつも適度な複雑さを持っており、さらにとても馴染み深いという意味でパーサを書く題材に適しています。
また、JSON パーサを書くには下記のような機能を利用することになり、プログラミング言語の基本的な使い方を学ぶにも良いテーマです。
・分岐、ループ、再帰処理
・文字列の扱い
・型、構造化データの扱い
このセッションでは、パーサを書いたことが無い方、パーサを書いてみたい方、また PHP 8 の新機能を使った実装を見てみたい方を対象に PHP 8 で JSON パーサを実装する方法をご紹介します。
Track ID: Track5-2
Discord Channel: #track5-2-json-parser
新卒3年目が新チームに入って皆から良くなったと感謝されることが増えました。
何が良かったの分からなかったので、改めて自己分析した話をします。
明日からできる簡単なことなので、お話きいていいなぁと思ったら是非実践してください!
Track ID: Track2-2-B
Discord Channel: #track2-2-b-hamee
コンテナネイティブ時代に突入した昨今、PHPer の皆さんはコンテナ化は済ませましたか?
Chatwork 株式会社では2020年に PHP アプリケーションをコンテナオーケストレーションツールのデファクトスタンダードである Kubernetes に置き換えました。
そこで、これからコンテナ化を行おうと考えている PHPer の方々向けに
など、Chatwork の事例を元に解説します。
Track ID: Track3-2-B
Discord Channel: #track3-2-b-kubernetes
大きく複雑になったアプリケーション、マイクロサービス間の複雑な連携、
事業がスケールしていくとそれまでうまく解決できていたものが、一筋縄ではいかない問題となることが多くあります。
こうした問題にはデータベースリファクタリングや、ソースコードの継続的なリファクタリングなどを活用することが多くありますが、
事業をさらにスピーディに支えるには、リアーキテクティングが必要となるケースが多くあります。
事業を支えるレガシーと云われるアプリケーションはどの様にして改善していくべきでしょうか。
本セッションではリアーキテクティングにEvent SourcingとCQRSを取り入れ、
多くのアプリケーションが事業が大きくなった場合や仕様変更に足かせとなってしまいがちなデータベースとフレームワーク機能の密結合、
多様化していくアプリケーション間連携などを解決していく実践的な内容をお届けします。
分散トランザクションや様々な手法に触れ、実際に改善してきた例も交えて解説していきます。
Track ID: Track1-3
Discord Channel: #track1-3-php-scale-out
PSRはPHP-FIG(PHPフレームワーク相互運用グループ)が発表する勧告群です。
その中ではHTTPについての勧告としてPSR-7, PSR-15, PSR-17そしてPSR-18が発表されており、これらはWebアプリケーションのモジュール間のインターフェイスとして活用できます。
今回は社内独自のフレームワークをPSR-7/15/17実装として置き換えた事例をとって、PHPとHTTPリクエストの関係およびPSR-17を実装したWebアプリケーションについて説明します。
このトークを見るにあたって、過去のPHPカンファレンスでの発表を含む「PSR-HTTPシリーズを理解するための情報源」を読むことを強く推奨します。
https://scrapbox.io/php/PSR-HTTP%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%83%85%E5%A0%B1%E6%BA%90
Track ID: Track2-3
Discord Channel: #track2-3-psr-http-web
Webサービスは、日常から多くの危険にさらされています。
多くの方が「Webサービスをセキュアに保つことは重要」と思いながら、実際セキュリティ事故にあわない限り他人事に感じがちです。
そうして、サービス上に潜むセキュリティリスクを過小評価しているかもしれません。
このセッションでは、私がWebサービスを開発・運用するなかで遭遇した攻撃や対処などをまとめ、セキュアに保つ必要性を見つめ直します。
とくに、いま私が携わっている月間2億PVほどの大規模コミュニティサイトを題材にして、実際にあった事例をもとに掘り下げていきます。
全体をとおした難易度は、PHPが読み書きでき、簡単なサイトを構築できるレベルの方を対象にしています。
本セッションでお話する内容は次のとおりです。
• Webサービスへの攻撃事例
• OWASP TOP10などのセキュリティ指針の解説
• セキュアに保つためにはどんな視点や行動が必要か
このセッションは、Webサービスへの具体的な攻撃手法を解説する可能性があります。
すべての聴講者は「本セッションで得た知識をもとに攻撃を行わない」ことにご同意ください。
Track ID: Track3-3
Discord Channel: #track3-3-secure-web-service
皆さんはテストを書いていますか?
テスト駆動開発をしていますか?
テスト駆動開発と言っても、どの部品の単位でテストを書けば良いか悩む方も多いのではないでしょうか。
テストを書く上ではソフトウェア設計への配慮が欠かせません。
ソフトウェア設計の大切さ、テスト駆動開発で単体テストを書く利点について理解を深め、その後にオニオンアーキテクチャを採用したソフトウェアでテスト駆動を行う手順を語っていきます。
当セッションでは下記のような話をする予定です。
・なぜテストを書く上でソフトウェア設計が大切なのか
・単体テストを書く利点
・オニオンアーキテクチャの解説
・オニオンアーキテクチャでTDDを行う手順
※アーキテクチャは触りだけ説明し、メインはテストの話になります
Track ID: Track4-3-A
Discord Channel: #track4-3-a-laravel-onion
PHP7でPreload, PHP8でJITと、PHPを高速化する仕組みが次々と導入されてきています。ベンチマークや解説記事などでどれくらいパフォーマンスが向上するのかをご覧になった方も多いかと思います。
しかし、一体どうして速くなるのか、どうのような仕組みなのか?Preloadとは何か、JITとは何をするものなのか、皆さんは答えられますか?
本トークではPHP8のソースコードレベルから、PreloadやJITの正体について、順を追って分かりやすく解説します。モダンなPHPが実行時にどのような動きをするのか、少し分かるようになってくれたら嬉しいです。
このトークでお話すること
Track ID: Track5-3-A
Discord Channel: #track5-3-a-preload-jit
テストピラミッドとは、Mike Cohn氏が提唱した各層のテストコードの比率や費用対効果を表したものです。
テストピラミッドでは「UIテストを薄く、ユニットテストを厚くした状態」が理想となっていますが、各層のテストコードを実装していく中でどのように意識すれば良いのでしょうか?
そこで、実際のPHP製システムにE2Eテスト、featureテスト、ユニットテスト等を実装する流れを例にして、テストピラミッドを意識したテストコード実装戦略について解説していきます。
どのような題材にするかは未定ですが、「過去にLaravel公式ドキュメントにあったチュートリアルのシステム(https://laravel.com/docs/5.1/quickstart-intermediate)を、Laravel8.x / PHP8.0にバージョンアップする」を題材にする予定です。
Track ID: Track4-3-B
Discord Channel: #track4-3-b-test-pyramid
「銀の弾丸はない」
ではPHP8は私達に何をもたらしてくれるのか。
私達はIikanjini Speed Up Contest、通称ISUCONの予選にPHPで挑戦しました。
結果は残念ながら468チーム中46位とあと一歩で本戦への切符を勝ち取る事が出来ませんでした。
実はどうしてもPHPでISUCON 本戦へ出場したい、その想いからPHP 8.0.0 Betaの投入を迷っていましたが
最終的に使うことなく敗退しました。そこに少なからず心残りはあります。
そんな中、先日PHP 8.0.0 Release Candidate 1が発表されました。
来年こそ、大手を振って導入できる事でしょう。
ISUCON は総合力の勝負です。
PHP8が銀の弾丸になることは無いのかもしれません。
しかし、私達PHPerはPHP8に壮大な夢を見らざるを得ません。
そこで私はPHP8のパフォーマンスに絞った内容調査を行う事にしました。
JITなどパフォーマンスに関して多大なる期待が寄せられているPHP8は、
私達をISUCON本戦の扉へ導く鍵となるかを検証してその成果をお話します。
今年、PHPを使ってISUCON 本戦へ進んだチームはただ1チーム
そのチームに続き、来年こそ私達PHPerの手でISUCON本戦への扉を開きましょう
■想定する聴講者
- PHP8のパフォーマンスに興味がある方
- PHP8のベンチマークに興味のある方
- 来年こそPHPでISUCON 本戦への進む心意気のある方
■お話しないこと
- パフォーマンス以外の話
- PHPのgRPC利用について
Track ID: Track5-3-B
Discord Channel: #track5-3-b-isucon