現在私が BABYJOB 株式会社で開発を担当している保活サービス「えんさがそっ♪」は、ドメイン駆動な設計スタイルで開発を行っています。
具体的には Laravel + オニオンアーキテクチャでの設計・実装を行っています。
私自身はこれまで単純な MVC 構成のアプリケーション開発経験のみで、ドメイン駆動な設計スタイルのアプリケーション開発を行うのは初めての経験です。
最近、ドメインの構造などについて再検討する機会があり、ドメイン駆動設計の戦術面への関心が高まりました。
技術的な調査を進めている中で、PHP でのドメイン層の実装戦術として Symfony(Doctrine)に興味をもち、入門してみることにしました。
この発表では Symfony(Doctrine)でのドメイン実装戦術について、Symfony に入門してみて分かったこと、分からなかったことを発表します。
いつものようにデプロイしようとすると、突然落ちる CI ワークフロー。
Pull request の時点ではテストは通っていたはず…。
落ちたワークフローを確認してみると、 apt-get update が落ちている、だと…?
突然このような状況に陥っても慌てないようにするために、普段あまり意識することのない apt コマンドとリポジトリの関係について、そして最終的に何がエラー原因だったのか体験談を共有したいと思います。
みんさんはLinterを導入されていますか?
・実装時のコーディング規約・ネーミング規約のチェック漏れが発生し、指摘対応・再レビューに工数がかかる
・コードレビュー時にコーディング規約・ネーミング規約の確認が面倒くさい
このような悩みを持たれている方は少なくないと思います。
「PHP_CodeSniffer」を導入することでそのような悩みを解決できるかもしれません!
そこで本セッションでは、「PHP_CodeSniffer」を導入したときの「実際にやって困ったこと」「やってみて初めて分かったこと」など
体験談を交えながら話していきます。
具体的には以下のような内容について話をする予定です。
・「PHP_CodeSniffer」とはなにか?
・「PHP_CodeSniffer」を導入するに至った経緯
・「PHP_CodeSniffer」を導入してみて
PHPに存在する "魔法のような" メソッド「マジックメソッド」。
普段はあまり気にしなくても、フレームワークやライブラリのコードを読むときに、見慣れないメソッドが出てきて処理を追う手が止まってしまったことはありませんか?
一つ上のPHPerになるために、これを機にマジックメソッドについての理解を深めましょう!!
本セッションではいくつかのマジックメソッドについて、クイズ形式でその効果や利用方法を説明します。
海外チームとのオフショアでは、少し特殊なコミュニケーションスキルが求められます。
単純なタスクを依頼するだけではどちらにも悪意がなくても想定外の落とし穴にハマってしまい、なにかしらの手戻りが発生してしまうため、タスクの依頼以上の情報提供や、サポートが必要になります。
どのような状況でどんな問題や認識齟齬が発生するのか、またどのようなアクションを取ることで認識齟齬を回避できるのか... オフショアチームとのやりとりを3年続ける中で得た知見を、NGパターンとOKパターンを提示しながらわかりやすくお話しします。
開発をしていると「この変数は何を表しているのだろう?」とか、「この関数は何をしているのだろう?」とか、一目見ただけでは何を伝えたいのかが分からない命名を目にすることがあります。
意図が伝わらないだけであれば調べれば済むかも知れませんが、時には命名が誤解を招き大問題に発展することもあります。
そんな不幸を呼び寄せる命名をあなたも知らず知らずのうちにしているかも知れません。
ここでは実際に私が見た「君はそもそも何をされてる方なの?」と言いたくなる命名の数々をご紹介し、命名の重要性を論じていきたいと思います。
「Raspberry Pi で L チカ」「PHP で L チカ」「Raspberry Pi で "Get Wild"」「PHP で "Get Wild"」のサンプルは良く見かけますが、みなさん「Raspberry Pi + PHP で "Get Wild" 」の実装例はまだ見たことがないのではないでしょうか。
というわけで、私がやります!
エンジニア20名規模で複数プロダクトの開発保守をしている自社で約3名の少数精鋭SREチームを立ち上げ、やろうとしてきたこと、それに対して実際できたこと出来なかったこと、そして今後の展望について話します。
チーム開発に欠かせないチームビルディング。
何となく雰囲気でやってませんか?
チームビルディングの目的や、よくある失敗例を混じえながら抑えるべきポイントについて説明していきます。
PHPerKaigiで得た知見を社内に共有するために、勉強会を開催しようと意気込んでる方!
実際の会場で勉強会をしたいが、何かトラブルがおこらないか不安な方!
そんな方に、リアル会場でのイベント運用方法から機材の事、5選です!
内容は、PHP勉強会@東京や自社の社内勉強会で実践・運用している事です。
●運用
集客、タイムテーブル、参加者の満足度を上げる方法など、運用して成功、失敗した事。
●機材
プロの配信エンジニアに教えてもらった、よくおこるトラブルの対処法で、私がおこなっている事。
20分発表とLTは違う種類のマイクを使った方がいい?
実は、ハンドマイクは扱いが凄く難しい。では、扱いの簡単なマイクの種類とは何か?
発表者の持ち込みPCがスクリーンに映らないトラブルを減らす方法は?
トラブルが起こりにくいメーカーのケーブル、コネクタ、コンバーターの紹介。
7.xのコミュニティーによるサポートが終わり8.xが今後のPHPの中心となる中、このLTではPHP8.xで追加された機能を紹介しながらその特徴についても紹介する。このLTで紹介する新機能は「match式」、「名前付き引数」、「コンストラクタ」の3つでそれぞれの基本的な書き方を紹介する他に、7系との処理の比較を行うことで新機能を使用することのメリットと注意点などについて紹介する。このLTの目的は8.xの新機能に関する参加者の理解を深めることで8.xの使用に対する参加者のモチベーションを上げること。このLTを通し、PHPのバージョンアップに対しての参加者の意識をよりポジティブにすることでPHPの関心を高めていきたい。
PHPerの皆さんが大好きなLT会。
このLTでは、毎月オンラインで開催している社内LT会をどのように運営しているかをお話します。
私たちは4〜5人でLT会を運営しています。
運営チームが毎月行っている「2週間前の準備・当日の運営・振り返り」の様子や、その時にどんなことを話しているのかなど、
LT会やイベントの運営をやったことがない方、これから開催してみたい方に参考にしていただけたらと思います。
PHPerの皆さんが仲良しのIDE、PhpStormくん。
そんなPhpStormくんにはたくさんの機能があり、多くのショートカットキーが割り当てられています。
このLTでは、PhpStormくんの様々な機能のショートカットキーを、時間が許す限りたくさん紹介します!!
デフォルトで設定されているショートカットキーはもちろん、私自身がカスタマイズして使っているショートカットキーも紹介します。
PhpStormくんとまだお話したことがない(まだ使ったことがない)方にもいろんな機能を知っていただき、魅力をお伝えできればと思います。
後輩に教育する中でよく引用させていただく資料や名言をできるだけ活用例と合わせてざっと紹介します。
教育する際の観点の振り返りや、言語化しづらいときに辞書的に使ったり、自身の振り返りとしても活用できます。
サービスの立ち上げ、数年間の運用を通し
「試行錯誤を繰り返し、致命傷を負わない戦い方」
を少しずつ学んできました。
その経験を通し
と感じた話をします。
熟練のエンジニアの方にも、初心者の方にも「わかる、ウケる」と感じてもらえる話をして
「いいものを作ろうとしている仲間」
として交流のきっかけができればいいなと思います。
PHPで実際にモノを動かしてみたいと思ったことはありませんか?
ラズペリーパイ(ラズパイ)のGPIOをPHPで制御することで、アクチュエータ(電気シリンダなど)を動作させることができます。
ラズパイとはシングルボードコンピュータで、電子工作や、近年では産業用途・IoTなどでも使用されています。
普段PHPを扱っているとPC上で完結する仕事が多いと思いますが、たまには現実のモノを動化してみると面白いです。
Slackのtimes文化根付いてますか〜?
Slackにて個人チャンネルを作りtwitterのようにつぶやく分報チャンネルことtimesですが、油断すると業務の話ばっかりになったり、投稿ハードルがあり投稿されなかったり、、うまく運用していくのがなかなか難しいものです。
そこで私がtimesでやっている様々な工夫を一挙に公開したいと思います。
先輩「この実装はどうしてこうなっているの?」
自分「ここは〇〇という理由でこうしています!」
先輩「了解です、その説明はコードコメントに書いておくとよいので追記お願いします~」
コードレビューを受けているとき、こんな経験はありませんか?
コードで表現できないことを説明したいとき、それを書く場所の候補はコードコメント、コミットメッセージ、プルリクエスト(説明欄やコメント)と多岐に渡ります。
「どこに書けばいいのかわからない!」そんなときの指針となるお話をします。
みなさんはPHPからディレクトリを作ったことはありますか?
PHPには mkdir というファイルシステム関数があるため、ディレクトリを作成するのに困ることは少ないかもしれません。
しかしながら、パスの指定方法や実行タイミング、パーミッションの指定方法を正しく理解していないと、
mkdirでエラーが発生したり、思った通りのディレクトリが作成されなかったりします。
このトークでは、ラッパー関数を作成しながらmkdirだけでもどのような問題が発生する可能性があるのかをお話しします。
.NETというとC#というイメージでPHPerにとってはあまり関係ないものと思っていませんか?
なんとPHPも.NETのランタイムで実行することができるんです!
PeachPieというオープンソースプロジェクトがあり、それを用いることでコンパイルしたPHPを.NETランタイム上で実行し、C#とPHPの相互運用が可能になりました。
このトークではPeachPieの紹介と、実際にPeachPieを用いて個人開発してみた際の知見や感想をお話しします。