みなさんは、外国のチームと開発をしたことはあるでしょうか?
オフショア開発では予想できないハプニングや思いがけないアクシデントが多々生じます。
私は、現在所属しているチームに参画して以降、PHPでの開発をともに進めているオフショア先のベトナムチームとの窓口を4年担当し、情報共有不足による失敗や、
遠隔メンバとの距離感や温度感の違いによる認識齟齬をはじめとする様々な出来事を経験しました。
しかし、4年担当した今でも想像しない出来事が発生するのがオフショア開発です。
基本的な確認事項などを抜かしてしまうだけで、予想外の事態が発生します。
本セッションでは、そんなオフショアにおけるハプニングやアクシデントを紹介し、それらを回避するノウハウなどを実例を交えてお伝えできればと思います。
目指せBot芸人!!
エンジニアであれば誰でも面倒な作業は自動化したくなるものです。
忘れそうな業務、何かをトリガにした作業、定期的なチェック...
これらのことを頭の片隅に置きながらの業務は、気が散って仕方がないのではないでしょうか。
自動化できることを自動化し、普段業務で使っているチャットへ通知することで、考えないでいいことを思考の外に追いやり、本来の業務に集中することができます。
とはいえ、急に自動化を始めようとしても、何を自動化すれば幸せになるのか、イメージができない人も多いかと思います。
本セッションでは、実際のBot活用例をもとに、Bot にどのような活用例があるのかを紹介します!!
PHPer であれば、PHP を使って明日からでも Bot を作成/運用できます。
あなたも Bot を作って Bot 芸人を目指しませんか?
PhpStorm 使っていますか?
ご存知の通り、PhpStorm は、開発を効率的に進めるための機能がたくさん搭載されており、PhpStorm を使いこなして開発を進めている人の作業を見ると、素早いコーディングに驚かされると共に、自分も同じように PhpStorm を使い倒したいと憧れます。
しかし、一方でいざテクニックを覚えようとしても、何から覚えていけばいいかとっかかりがわからず、結局自身の知っている範囲でのショートカットやテクニックのみを利用してしまうといったことはないでしょうか?
このセッションでは日常の業務で使えそうで、手をつけやすい PhpStorm のテクニックを段階ごとにまるっと解説し、少しずつ PhpStorm エキスパートに近づくことを目指します。
既存サービスにフレームワークを導入するとなると、さまざまな障壁が立ちはだかります。
導入によるコスト、品質への影響など。
弊社では、リリース後21年目になるレガシーサービスにLaravelを導入しました。
このセッションでは、Laravel導入のためのアプローチ方法や、戦略、手順、その結果を共有させていただきます。
レガシーサービスだけど、フレームワークを導入してみたい開発者向けの内容となります。
新卒エンジニアとして入社して、配属されたのはPHPで書かれた20年もののレガシープロダクト!?
エンジニアとしてプロダクトに関わるのは初めてだし、PHPを書くのも初めて!
一体私、どうなっちゃうの~!?
ということで、今回は新卒エンジニアとしてPHPプロダクトに参画していく中で、苦労した点や、それを乗り越えた方法などをLTでお話できたらなと思います。
僕と同じ新卒エンジニアの方や、PHP入門者の方たちに「あるある、ないない」と楽しんでいただければ幸いです。
PHPは言語仕様上、stringやintegerといったスカラー型にRubyやPythonのような他の言語のようにメソッドが生えておらず、手続き型のAPIを用いてそれらを操作する必要があります。
しかしながら、メソッドが生えている方が便利な場面もあり「そのように書けたらなあ...」と思う事もあると思います。
これらを達成するのにエクステンションを用いて言語仕様を拡張しスカラー型にメソッドを生やす事も出来ますが、今後の言語仕様の追加や変更に追従しなければならないなどの点を考慮して、純粋なPHPのクラスでスカラー型をラップしてそこに便利に扱う為の関数を生やしたライブラリを作った話をしたいと思います。
N + 1問題とは、ループ処理の中で都度SQLを実行してしまうことで必要以上にSQLが発行されてしまい処理が遅くなってしまう問題です。
N + 1問題が存在していても、ユーザーに影響のない程度の処理時間なら改修する必要はありません。
しかしながら、データ量が増えたりページへのアクセスが増えることで後から問題になってしまうこともあります。
今回は、そんなN + 1問題をサクッと検出して、問題が発生する前にN + 1問題を撲滅する方法をご紹介します。
Rectorを使うと、簡単にコードの書き換えを行うことが出来ます。
「FWのバージョンを上げたから新しい記法に対応しよう」とか「新規にヘルパーメソッドを定義したから、既存コードもこちらを使うようにしたいな」なんて場面で、コマンド1発で実現できるのです・・!
自身のプロジェクトの固有の書き換えルールを定義し、活用できたらとても便利だと思いませんか?
例えば「新しいコーディング規約を定義したから、それに沿ったコードに直すぞ」なんて作業を自働化できたら嬉しいですよね。
独自ルールの作成方法、利用方法をLTで紹介します!
今やソースコードをgitで管理しているのは当たり前の世の中になりました。
gitのcommitを俯瞰で見ることで
・誰がどれくらいcommitしているのか
・対象期間に1番commitしてるのは誰なのか
・このリポジトリに関して1番詳しいのは誰なのか
などを知ることができます。
このセッションでgitのcommitの集計方法を学びましょう!
PHP8.0から追加された機能、Attributes。
これを使ったメタプログラミングの例として、クラスのプロパティにAttributesを付与することで
・データベース(PDO)から取得したデータをクラスのインスタンスに変換する
・JSON文字列をクラスのインスタンスに変換する(あるいはその逆)
といった処理が自動で出来上がるプログラムの解説をします。
Pull Request(PR)ベースでCIを回している時に、「ここのコードがおかしいよ!」と分かりやすく指摘が入るのは、飛躍的に開発者体験をよくしますよね。
cs2prは、そんな良い体験をサクッと提供してくれるツールです。
GitHub Checks APIを用いて、PRの該当箇所上に指摘内容を表示してくれます。
(Reviewdogなどを利用している方にはイメージしやすいかも知れません。)
PHPCS、PHP-CS-Fixer、PHPStan、Psalm 辺りにはもちろん標準で対応しています!
ちょっと手間を加えれば、PHPUnitでも同様に「結果をPR上に出す」ことが可能になります。
どんな事をしてくれるのか?どうやって使うのか?を紹介します!
「(登壇はしてみたいが)話せるネタがない…」と思った事はありますか?
「高度で専門的な内容でなくても、他の誰かにとっては嬉しかったり、興味深いものである可能性が存分にある!」というのが個人的な考えです。
何であれ「話してみたいな」と思ったなら、それは登壇への第1歩です!
このLTで、過去の経験・感覚を踏まえて、自分自身が「どう考えてネタ作りをしたか」をシェアしてみようと思います。
「なんだ、その位なら話せることがありそうだぞ!!」という気持ちになってくれたら幸いです!
定期実行を安定的に行おうとすると意外と考えることは多いですよね
私たちが提供しているサービスの裏側では毎日数百のコマンドが定期実行されており、その安定化に日々頭を使ってきました
本セッションでは、そんな私たちが遭遇した様々な定期実行に関する問題とその解決法、たどり着いた現在の構成に関してお話ししたいと思います
みなさんよくご存知の通り、PHPには等価演算子が2つあります。
「==」と「===」です。
前者は緩やかな比較、後者は厳密な比較が行われます。
PHPやJavaScriptに馴染みのある方ならよくご存知だと思います。
言語問わずよく使う演算子の1つである等価演算子ですが、実際の言語仕様は知っていても
内部の実装は知らないなんてことはよくあると思います。
今回はみんな嫌いな緩やかな比較の実装がどこにあるのか、そしてどんな実装がされているのかをお話しようと思います。
エンジニア教育を事業としてやって一人エンジニアを2年やってきました。
その中で、
ということがいくつかあります。その辺りを共有することで、
が進むのではないか?と考えていることをお話しします。
「リードエンジニアいねえ!」問題を解決する足掛かりになればなぁと思います。
高速化が進み、JITコンパイラも導入されたPHPですが、残念ながら高速なスループットを求められる現場においては他のコンパイル型言語が選ばれることが多いようです。
最近では、ISUCONにPHPで挑戦するものも少なくなりました。しかし、だからこそ!PHPでウェブサーバーを書いて、色んな言語に速度で挑戦してみましょう!
みなさんはパフォーマンス改善のためにアプリケーションの最適化に取り組んだことがありますでしょうか?
何もデータベース構造を再構築したりと大規模な改修することだけが最適化ではありません。機能実装のついでに関連処理をリファクタリングしてあげるだけでも十分な最適化になります。
このトークでは気づいた時にちょっとリファクタできる程度のデータベースクエリの最適化Tipsを解説いたします。
5分間で可能な限り詰め込んでお届けします!
こんな方におすすめ
PHPUnitやPHPStanのようなComposerでインストールしてコマンドで呼び出すライブラリ・アプリケーションの作成方法を紹介したいと思います。
phpとはhypertext preprocessorである。
phpの機能が高度で複雑怪奇になっている現在、若者のhypertextのpreprocess離れが深刻である。
改めてpreprocessorとは何か、どんなことができるのか、またyay等のライブラリを用いて話していこうと思う。(lispによくある便利macroなども含めて話したい)
データベースのテーブル定義をしてて、こんな事ってないですか?
・まだ始めたばかりのサービスでユーザ数を知られたくない。
・ユーザIDが連番になっていて、ハックされそうで怖い。
このようにユーザIDを公開したくない場合に、推測されにくいIDがuuidです。
UuidTraitを作って、Modelクラスでuseするだけでuuidの生成ができます。
このセッションでは、UuidTraitの作成から使い方までを説明します。