小さくコツコツ手をつけておけばよかった…そんな気持ちになることもあるかもしれません。。
日々降ってくる、マイナーバージョン・パッチバージョンの更新を適応するのはとても大事です。
メジャーバージョンがあった場合はどうでしょう??
依存パッケージ間の依存関係があるなど、マイナーバージョン・パッチバージョンの更新と比較して、複数のパッケージの同時更新が必要だったりもします。
・composer updateのおさらい
・composer updateで何ができるのか?何が起こるのか?
・パッケージ更新のはまりポイント
・コツコツパッケージを更新していくために…
パッケージを更新するコマンドであるcomposer updateを軸に、日々のパッケージ更新のヒントとなるポイントをお伝えできればと思います!
テーブルのデータ量が増えることで、今までスムーズに実行できていた検索クエリが段々と遅くなっていく…ある程度長く運用しているシステムではあることではないでしょうか?今、私が参加しているチームでは、まさにこのような問題を起こしているばかりでなく、数年後には性能劣化によるサービス停止を引き起こしかねない、とあるMySQLの巨大テーブルのリモデルに取り組んでいる真っ最中です。
本セッションではこの取り組みの中で、チームがどのような決断をしていったか、そして現在進行形でどのようにリモデルを進めているかを共有します。DBアクセスが抽象化されていないモノリスなレガシーシステムで、億単位の行を持つMySQLテーブルをサービス停止なしでリモデルする事例として、皆様のご参考になれば幸いです。
保育・教育施設向けICTサービス「CoDMON(コドモン)」は2015年のリリース以来、多くのサービスを提供してきました。
ありがたいことに長くご利用くださるユーザー様が増える一方で、DBのデータ量がもはや看過できなくなるほどの増加ペースに達しており、今年5月からDB負荷増大のリスクと対策を検討するチームを発足して、この問題に取り組んでいます。
本セッションでは、この取り組みの中で、データ量の増加に起因するDB負荷の問題をPHPのモノリスなレガシーバックエンドや、適切でないテーブル設計との関係の中でどのように分析し、リスク評価し、対策を考えたのかをお伝えします。皆様のご参考になれば幸いです。
ここ数年、私はRaspberry PiでCPUを作っています。
これは、Z80というCPUをコンピュータから取り外して代わりにRaspberry Piで作った自作CPUを取り付けて動かすというものです。
このトークでは私が作成した2つのバージョンのCPUを題材に、以下の様なことをお話します。
このトークを聞いた方が「CPUを作るというのはどういうことか」をちょっぴり理解し、CPUやハードウェア自作が好きになることを願っています。そしてあわよくば一緒に自作CPUを楽しみましょう!
2024年1月、「なぜキャッシュメモリは速いのか」が話題になりました。
この質問に答えるのはなかなか難しく、X(Twitter)ではいろいろな回答がされていました。この回答はさまざまな立場・理解からされていて、Xのタイムラインをご覧になっていた方はいまいちしっくりこなかったのではないでしょうか。
このトークでは「なぜキャッシュメモリは速いのか」に答えるのに必要な知識を、初心者の方にもわかりやすくご説明します。
キャッシュの使いこなしは現代コンピュータにおいて避けることはできず、キャッシュを制するもののみがコンピュータを高速に動作させられると言っても過言ではない状態です。キャッシュを理解し、キャッシュを楽しみましょう!
昨今需要が高い子どもの安全確保に応えるべく、保育・教育施設向けICTサービス「CoDMON(コドモン)」では、園児の登降園時間帯の所在確認機能を短期間で開発しました。
本セッションではプロジェクトを進行するにあたり、どの様な課題を経てリリースできたのか、以下のことに触れながらお話しできればと思います。
概要: オブジェクト指向プログラミングの基本概念である「Class」と「インスタンス化」を、弊社エンジニアが後輩に教える時の例として、ポケモンを例によく用いています。
具体的には、ピカチュウをクラスに例え、モンスターボール内のピカチュウがインスタンス化され、技を使うという流れで説明のようなものです。静的変数(static)やインターフェースといった概念も、ゲームの要素を用いて理解しやすい形で説明します。
上記の内容に加えてSOLID原則などのより詳細なオブジェクト指向設計などを用いて話せるよう内容付与していき、初学者の方も、初学者に教える方も、参考になる内容です。
キーポイント:
・クラスとインスタンス化の基本概念の紹介
・インスタンス化によるコストの考察
・静的変数やインターフェースをポケモンに例えて解説
・さらにSOLID原則などオブジェクト指向設計の参考になる詳細事例
Laravelで使えるCLIのphp artisanを「知ってる」「使ってる」という方はいらっしゃいますか?
私も、コドモンにjoinするまでは存在すら知りませんでした。
Laravel開発していると毎日実行したくなってしまう...そんな便利なartisan(職人)たちの一部をご紹介します!
「まだvendor/bin/phpunitでテスト実行しているんですか?」 ーphp artisan testでいけますよ!
「まだコピペでControllerを作成してるんですか?」 ーmake:controllerで雛形を作れますよ!
「バッチの定期実行設定、疲れませんか?」 ーscheduleでラクラク運用できますよ!
こんな人にオススメ!
・Laravelで開発しているけどphp artisanになじみがない人
・上記3つの質問にひとつでも「YES」と答えたPHPerの人
Web APIの成功は、その設計や機能だけではなく、どれだけ優れたドキュメントを提供できるかにかかっています。APIドキュメントは、開発者がAPIを正しく理解し、活用するための鍵であり、ユーザー体験とシステムの信頼性を大きく左右します。本セッションでは、モダンAPI開発に不可欠なAPIドキュメンテーションの基本的な考え方から実践的なツールの活用法、さらには継続的なドキュメントのメンテナンス手法まで具体的に解説します。
トピック:
参加者はこのセッションを通じて、継続的にAPIユーザーに優れたAPIドキュメント体験を届けるための知識を習得できます。
Googleから2023年10月に発表され、2024年2月から適用された「メール送信者のガイドライン」。
メール送信機能を有するサービスは何らかの対応に追われたのではないでしょうか。
私が担当するサービスでも、他の開発スケジュールが立てられていた中でガイドラインへの対応を迫られました。
顧客数が多く、それぞれが異なる用途でメールを送信するサービスにおいて向き合った
・事業サイドにガイドラインを説明してもうまく伝わらない
・OpenDKIMとPHPによる2段階でのDKIMリリース
など、苦労と工夫をお話しします
皆さんは清水の舞台から飛び降りる気持ち(※)で自社サービスにAWSを導入したことがありますか?私はあります。
私が担当しているメール共有サービスのメールディーラーは2001年にローンチしましたが、すべての機能がひとつのサーバに実装されており、apacheとDBですら集約されています。
また、フレームワークを導入しておらず、ひとつのファイルにDBアクセスを行い、print文でHTMLを出力しています。
そのためプログラムの陳腐化が急速に進んでいます。
そんな「モノリシック」を地で行くサービスに、AWSを導入することになりました。
AWSを導入した目的とどのような効果があったか?また、今後どのようなアーキテクチャしようとしているかを、メールディーラーのテクニカルリーダである私が可能な限り具体的に事例をもって説明いたします。
※一世一代の決断をする意味のことわざ
皆さんはリリース後に文字化けが発生して、道頓堀に飛び込みたくなったことはありますか?
私はあります(※)。
PHP8.2の下位互換性のない修正の1つにmb_detect_encodingの文字コード検出の仕様変更があります。
私が担当しているメール共有サービスのメールディーラーで、バージョンアップ後に一部の受信メールが文字化けをしました。
原因は受信したメールのエンコード時に、前述のmb_detect_encodingを使っていたことです。
下位互換性がないPHPの仕様変更だったため、文字化けを回避することができず、
メールヘッダに文字コードの指定がないメールまで対応することになり、その対応に述べ約7人日かかりました。
メールディーラーのテクニカルリーダである私が、顧客対応で泣きをみたことを中心に苦労した経験をお話しいたします。
※実際には飛び込んでいません。
事業の成長スピードに追いつくためにスピード優先で開発した結果のコードに、このような特徴がありました。
あるとき、機能追加に伴いコードの保守性が低いことに危機感を感じてリファクタリングに踏み切り、業務ロジックの切り出しなどユニットテスト可能にしていく対応を行い、非常に扱いやすくすることができました。
このセッションでは、リファクタリング活動について、修正前コードと修正後のコードがどのように変化したのか、安全にリファクタリングを行うためにどのようなテストを用意したのか、リファクタリング活動を通して気づいたこと/学びについてお話します。
Rustは高いパフォーマンスとメモリ安全性を両立したプログラミング言語で、最近ではLinuxカーネルの開発に一部取り入れられたことでも話題になるなど、人気の高い言語の一つです。
そのRustで、PHPの拡張モジュールを作ることができるのをご存知ですか?
拡張モジュールは通常C言語で開発されますが、ext-php-rsというライブラリを利用すると、Rustで書いたコードをPHP拡張モジュールとしてコンパイルすることが可能になります。
このセッションでは、PHPerでありRust初心者の私がRustを使ってPSR-7ライブラリを開発した経験をもとに、以下のことをお話しします。
障害が起こった時には全力で対応しますよね。
障害が起こった後の再発防止までちゃんと検討してますか。
このセッションでは、再発防止のアイディアを捻り出すための方法と、それを実行に移すためのチームルールについて共有します。
例えば、アイディアを捻り出す方法には、こんなステップを踏んでいます。
PHPフレームワークにおける「ミドルウェア標準化に関するガイドライン」であるPSR-15は、主にフレームワークの内部で使用される技術であり、普段の開発では意識する機会が少ない部分です。
しかし、PSR-15はリクエストの処理とレスポンスの生成に直結する部分であり、この概念を理解することでフレームワークがどのように動いているかを知る手助けになります。また、PSR-15を用いれば簡単なフレームワーク作成も視野に入るかもしれません。
本LTでは実際にコードを見ながら、「5分で理解するPSR-15」と題してお話ししたいと思います。
皆さんにとって、最もお気に入りのPHPフレームワークは何でしょうか?私はFlowです。
昨年秋に新しいプロジェクトに配属され、初めてFlowに触れる機会を得ました。
以来、約一年間、業務を通じてFlowを利用してきました。Flowを触る度、直感的でわかりやすい設計と豊富な機能に心が躍り、気が付けばドはまりしていました。
しかし、GitHubのスター数は150ほどであり、LaravelやSymfonyのようなメジャーなフレームワークと比べると知名度が低いのも事実です。
今回のLTでは、Flowの良さを少しでも知っていただけるよう、私の感じたFlowの魅力を皆さんにお話ししたいと思います!
話すこと
・Flowの特徴
・個人的なFlowの好きなところ
話さないこと
・他FWとの比較
Select2というライブラリを使ってサジェスト機能を導入しようとしたものの、PrototypeJSとのコンフリクトや、データ量が多い環境でのパフォーマンス問題に直面しました。最終的にライブラリを使わず1から独自に実装した結果、パフォーマンスが大幅に向上し、機能を完成させることができました。この5分の発表では、その経験から学んだライブラリ選定の課題と、バックエンド処理を使ったサジェスト機能の実装方法を紹介します。
PHPStanは静的解析ツールとして、日々の開発で多くのエラーや警告を教えてくれます。今回の発表では、私が独断と偏見で選んだPHPStanのエラーをできるかぎり紹介し、そのエラーがどのような状況で発生するのか、また具体的な修正方法を一挙に発表します!
PHPStanのエラーを理解して、あなたも今日からPHPStanをあなたのより良い同僚の一人にしましょう!
そして開発品質を上げていきましょう!
PHP開発者ならおなじみのvar_dumpとvar_exportですが、これらの関数がどのように動いているのかを考えたことはありますか?
本発表では、var_dumpとvar_exportの違いを簡単に紹介し、それを切り口にPHPのソースコードを読み始める方法とそのメリットをお話したいと思います。PHPの内部動作を知ることで、デバッグや開発スキルをさらに向上させるきっかけを提供します!