みなさま、技術コミュニティは好きですか?私は好きです。
そんな私は福岡という地方都市で暮らしていて、技術コミュニティが大好きです。
東京に比べると地方でのイベントというのは絶対数は少なくなり、参加者の人数も少ないのかもしれません。
実際私はコロナ禍においても、ひたすらコミュニティ活動を続けていましたが、
そこで断絶したコミュニティを見てきました。
地方でコミュニティに求められる属性として、コミュニティの継続性という観点があると思います。
コミュニティの継続性とは何なのでしょうか。
今回は、私が今までコミュニティ活動を10年間行ってきて見えてきた
コミュニティに必要な要素としての「熱」のお話をします。
カンファレンスのみなさまだからこそ、目を向けるべきコミュニティを言語化して振り返ってみましょう。
そこで見えてくるなぜコミュニティが楽しいのか、続くのかを皆さんと一緒に考える機会になれば幸いです。
みなさまは技術広報という役割をご存知でしょうか。
私は所属する株式会社Fusicにてエバンジェリストという役割を担っているのですが、
その中で技術広報という役割も一部担っています
正直私は広報という分野の専門家ではありませんしド素人です。
それ故自らの登壇という以外の広報アクションはかなりの悪戦苦闘をしています。
そこで私はエンジニア以外も巻き込みながら技術広報チームを立ち上げて、
素直に自分以外の力を借りながら技術記事の執筆や自社オンラインイベントの立ち上げなどを実施し、
失敗を繰り返しながら少しづつ少しづつ改善を行ってきました。
そしてほんの少しではありますが、芽が開いてきて繋がったような気がします。
今回は専門ではないながら、その技術広報チームで試行錯誤しながら行ってきた活動を振り返り、その中で得た知見を言語化してお伝えします。
みなさんLaravelは使っていますでしょうか?
LaravelはPHPの中でも最も広く使用されているフレームワークの一つであり、その中でも「セッション」はWebアプリケーション開発において重要な機能の一つです。
そんなセッションですが、我々はLaravelのセッションの仕組みを理解せず利用し失敗をしてしまいました。
本トークでは、なぜそのようなミスが発生したのかを理解し、Laravelのセッションの仕組みを紐解いていきます。
Laravelのセッション機能は非常に便利である一方で、その仕組みを正しく理解していないと予期せぬ問題が発生することもあります。
具体的な事例を通じて、どのようにして問題が引き起こされたかを明らかにし、それを回避するためにはどのように対処すべきかを解説します。
フレームワークの便利な機能は深く理解せずに利用することもできますが、理解することでより堅牢なコードを書くことが可能になります。
本トークを通じてLaravelのセッション機能を理解することで、同様の失敗を未然に防ぎ、よりLaravelを活用できるようになりましょう!
心理学者のロサダをご存知でしょうか。
ロサダは対人関係において、ポジティブな表現とネガティブな表現の比率を3:1とすると信頼感や安心感を与えやすいことを提唱しました。
俗にこれはロサダ比と言われています。
また私事ではございますが、先日PHP Conference2023にて「CodeReviewerが求められること」を発表してまいりました。
https://fortee.jp/phpcon-2023/proposal/25891e6c-7762-47b5-8cb3-e3db7f056abc
そこで、CodeRevieweeが求めるものの中に「自信を持ちたい、安心したい」という気持ちがあることが明らかとなりました。
本セッションでは、CodeReviewerが求められることを満たすために、ロサダ比を用いることはできるのかという点に迫ります。
また、僕の現場におけるコードレビューの実例や、エンジニアにインタビューなどにより、「自信を持たせるReviewerの極意」を考察していきます。
レビュー時、依頼時に少しでもお役に立てると幸いです。
対象者: コードレビューを行う全エンジニア(役職問わず)
お話しないこと: 心理学の専門家ではありませんので、心理学の深いお話をする予定はありません。
現在私が BABYJOB 株式会社で開発を担当している保活サービス「えんさがそっ♪」では、バックエンドは PHP で Laravel、フロントエンドに Laravel の Blade テンプレート + jQuery で構築しています。
最近ではフロントエンド開発への課題感から React の導入を積極的に行っています。
React 導入の経緯としては...
①肥大化した jQuery の管理に限界を感じていた
②流行りの SPA に挑戦したかった
今回は Laravel 製のサーバサイドレンダリングアプリケーションに React を部分導入してみて、感じたメリットとデメリットをお話ししたいと思います。
皆さんは match 派?それとも switch 派?
PHP 8 から待望の match 式が switch 文の改善形として新たに導入されました。 switch 文が抱えがちな潜在的なバグのリスクが軽減され、より使いやすく洗練された構造になりました。
しかし switch 文もまだまだ現役! match 式にはない良さを見つけていきたい!
この発表では、match 式と switch 文の良さをそれぞれ深掘って適切な使い方を紹介していきます。
PHPはインタープリタ型言語であり、一般的にPHPスクリプトを実行するにはPHPインタープリタが必要になります。
これによりスクリプト実行前の事前コンパイルなしに実行できますが、CLIツールなどを配布する際はユーザーの環境にPHPインタープリタを導入する必要があり、Goなど事前コンパイルする言語に比べてポータビリティが低いという意見もあるようです。
もしPHPスクリプトを実行可能なバイナリとして扱えたら、、、?
例えば、ユーザーのPHP実行環境を意識することなくCLIツールを配布できるでしょう。
php-static-cliを使えば、PHPスクリプトを実行可能なバイナリとして扱うことができます。
(bcmath,xmlなどの拡張も同じバイナリに含めることができます。)
本トークではphp-static-cliを用いて、単純なCLI〜DBアクセスを伴うCLIまでをPoCし、PHPの新たな可能性を探ります。
このトークを聞くことで、PHPの環境構築の手間を省き、PHPの新たな可能性を感じることができるでしょう。
皆さんはPHPアプリケーションのリアルタイムログ分析は行っていますか?
適切にログを収集することで、問題の早期発見や素早い意思決定などのメリットがあります。
今回紹介するのは、高い柔軟性と信頼性を持つデータ収集ツールのFluentdです。
Fluentdはクロスプラットフォームで動作し、アクセス、アプリケーション、システム、データベースなどの様々なログの収集に対応しており、
PHPアプリケーションのログ管理も非常に効率的に行うことが出来ます。
このセッションでは、リアルタイムログ分析の基礎的な部分から、PHPアプリケーションとFluentdの統合の手法まで、Step-by-Stepで解説します。
クリーンアーキテクチャを知っていますか?
そう(層)ですね。
クリーンアーキテクチャは層を切り分けることで、テストをし易い構造を作る設計手法です。
Controller -> UseCase -> Repository -> DataAccessObject
-> QueryService -> DataAccessObject
-> Service -> DomainService
こういった IO や処理を切り離し、各層において逆順での接続を許さないことで
ある程度のビジネスや機能に沿った実装をメインに置きながら、テストをしやすくした機構になります。
これだけをメインに据えたものは 軽量DDD ともいわれますね。
この構造を維持をするのは、人力レビューが基本のため、とても手間がかかります。
しかし、 php には phpat というアーキテクチャの定義ライブラリが有るのです。
これを使うことで、この構造を機械的に確認してくれるようになります。
リアーキテクチャを行う際に phpat を設定し、
1 年程度 実際に運用した内容とその変遷、
簡単な設定方法について皆さんにお話させていただきたいと思います。
6年ぶりに!関西で!PHPカンファレンスを開催してきました!!
PHPカンファレンス関西では、今回のテーマを「関西PHPエンジニアコミュニティの立ち上げ」とし、以下3つの達成を目標に開催しました。
実際のところ上記目標は達成できたのか?どのようなイベントになったのか?など、関西の熱気を5分でお伝えできればと思います!!
ジョシュアツリーの法則って知ってますか?
「名前を知ればそれを認識できるようになる」「名前を知らないと認識できない」といった現象のことです。
我々エンジニアの身の回りには様々な現象があり、中にはみんなが経験したことがあるものも多数存在します。
そんな「現象」や「事象」の中にはあまりにも名前が付けられ、事象の解消や共有が行われているものがあります。
名前を知ることは認識すること!
この発表を聴いてそんな""あるある""の名前を知り、事象を正しく認識して、次に生かしましょう!
多くのWEBアプリケーションで導入されているであろう ECS(Fargate) 環境では DB マイグレーションってどうやってますか?
ECS Execログインを利用して migrate コマンドを実行する
ecspresso をつかう
自前でマイグレーション用のコンテナを用意する
(他にもある?)
弊プロダクトでは マイグレーション用のコンテナを用意する 方法を採用しています。
コンテナ環境での DB マイグレーションの実行方法はあまり情報がないように思われるので参考になれば嬉しいです。
メールを送る処理の実装時うっかり誰かに送ってしまうことはないでしょうか?
開発時のメールの誤送信事故を防止するために、ダミーのメールサーバに送るようにするということが多いかと思います。
Mailcatcher や Mailhog、Mailpit などの便利なツールが公開されていますが何か使われていますか?
弊プロダクトでは、ツールは利用せずにログにメールの送信内容を出力しています。
このアプローチでの Laravel を利用した開発時のメリットとデメリット、ログの可読性を上げるための工夫など私たちが行っていることを紹介します。
皆さんはPHPサーバーのセットアップをどのように行っていますか?
手動で行う方法、構築済みサーバーを利用する方法、コンテナ技術を用いる方法など、様々な方法があると思います。
しかし、これらの方法は時間がかかったり、手順が複雑であったり、構成変更の柔軟性に欠けたりすることがあります。
今回紹介するのは、Ansibleという強力な構成管理ツールを用いた、PHPサーバーの構築・デプロイメントの自動化です。
AnsibleはSSH接続によってエージェントレスで動作し、軽量で学習コストも低いため、PHPサーバーの環境構築に最適なツールです。
このセッションでは、PHPエンジニア向けに、柔軟な構成で効率的にPHPサーバーを自動構築する手法についてお伝えします。
相当昔にLaravel 5.5でUploadedFileのことについてまあまあ詳細に書いてきたのですが、あれから数年も経ち2桁台に差し掛かってきたLaravelの現在のUploadedFileがどうなっているか、5年ぶりに暴いていこうと思います。
現在リリースされている最新版の10.xでお話する予定ですが、11.xがリリースされた場合は、11.x版で修正してお話します。
PHP8.3で追加されたjson_validate()
ですが、痒いところに手が届く大変素晴らしい関数です。
この機能について、具体的にどの辺が便利になったのかを、自身が経験してきたケースと実際の解決方法、json_validate()
を用いた場合どう改善するかのご紹介をします。
そして内部処理がどのようになっているかphp-src
の内部処理から深掘りをしていきます。
json_validate()
を用いない場合の実装ケース
json_validate()
を用いた場合の実装ケースjson_validate()
の内部処理を深掘りしていこう不具合や障害発生時にSlackなどでエラー通知を受け取ることはありますよね。
そのとき、即座に何をすべきか具体的な対応方法をイメージ出来ますか?
エラー発生時の対応は、迅速かつ効率的でなければ、小さな問題が大きな障害に発展することも……!!
そこで、私がエラー通知を受け取ったときの初動〜対応完了までに「何を考えて」「どのように対応しているのか」をお伝えします!
このLTを聞けば、「エラー通知来ないでほしい」と願っている皆さんも、通知が来ても慌てることなく、冷静に対応できるようになっているはずです!
リモートワークが日常となった現代、テキストコミュニケーションの重要性に気づいている人はどれほどいるでしょうか?
リモートネイティブとして、新卒から3年間の社会人経験を通じて、私が学んだテキストコミュニケーションの重要性をLTでお伝えします!
「先輩にどう質問する?」「ビジネス側のやり取りはどう進める?」などシーンに応じて、伝わりにくい文章の例をどう改善するか解説します!
そして、絵文字「👍」や感嘆符「!」など細かな表現まで、日々のテキストコミュニケーションで意識しているポイントを余すことなくお話しします!
多くのPHPerは日常的にGitを使用していると思いますが、理解して使いこなせているでしょうか?
このトークは、新卒PHPerやGit初心者を対象に、チーム開発におけるGitの“使いこなし方“に焦点を当て、実践的なノウハウをお届けします!
単にcommit&pushしているだけの「ただ使う」レベルから、わかりやすいPRを作るために適切なコマンドやオプションを選択できる「理解して使う」レベルへとステップアップしましょう!
Gitを使いこなすことは、楽しいプロダクト開発に繋がるということを、皆さんに伝えたいです!
このトークでは、LaravelのORMシステムであるEloquentのアクセサ・ミューテタが何か、またクエリビルダとの違いは何かについて、PHP初心者に向けてわかりやすく解説します!!
その後、Eloquentとクエリビルダを組み合わせて使用する際の注意点について、実際に起こった失敗談を紹介します。
そして、この失敗から得た教訓をもとに、同様の問題を避けるためにはどうしたら良いのかについても掘り下げます。
このトークを聞くことで、Laravelを利用しているけれどもEloquentとクエリビルダの違いが分かっていない方も、明日からこの2つの違いを理解し、安全にデータベース操作ができるようになるでしょう!乞うご期待!