BtoBなWebアプリケーションを開発してSaaSとして提供していると、お客様から「弊社の業務フローの都合でここを変更して欲しいのですが」という相談?要望?恫喝?を受けることがあります。
もちろんお金を払ってくれる大事なお客様なのですべての要望にお応えしたいのですが、無秩序にすべてを受け入れてカスタマイズすればコードもプロダクトもどんどん複雑になって、カオスと化してしまいます。
を考えながら個社カスタマイズを実装していく考え方をお話しします。
IaC(Infrastructure as Code)は、クラウドインフラストラクチャの自動化と効率化に欠かせない技術となっています。クラウドベンダーの一つであるMicrosoft Azureには、TerraformやARMテンプレート、BicepなどのIaCツールが用意されています。それぞれのIaCツールには特徴や利点があり、どちらが優れているかは状況によって異なります。
また、GitHub CodespacesはWebブラウザ上で開発環境を構築できるクラウドのエディターです。GitHub Codespacesを使うことによりローカル環境を汚さず手軽に環境を整えることができます。
本セッションでは、初級者向けにGitHub Codespacesを利用して、Terraform、ARMテンプレート、BicepのIaCを比較してみます。
AzureでPHPの環境を整えることを例にあげ、それぞれのIaCツールの利点や欠点を比較していきます。また、GitHub Codespacesでの開発環境構築の手順や利点についても解説します。
本セッションを通じて、AzureにおけるIaCの比較とGitHub Codespacesの活用方法について学び、より効率的なクラウドインフラストラクチャの構築に役立てていただけると幸いです。
ChatGPTやOpenAI APIを使って何か作ってみませんか?openai-php/clientを使えば、PHPアプリケーションから簡単にOpenAI APIを呼び出すことができます。このトークでは、OpenAIで使えるAPIの機能紹介、openai-php/clientのセットアップ方法、OpenAI APIを使ったサンプルLaravelアプリケーションの実装を共有します。
皆さんはどこの言語圏にお住まいでしょうか?
(もちろん PHP 言語圏だとは思いますが)PHPer の皆さんの中には,私と同じ日本語圏にお住まいの方も少なくないのでは無いでしょうか?
日本語と言えば?そう.マルチバイトですよね.私達は日頃からマルチバイト文字と呼ばれる文字を扱っています.
一方で,Laravel を始めとする世界で使われている OSS を作っているのはどこの国の人なのでしょう?
OSS のコミュニティを覗いてみると,ドキュメントや Issue はどれも英語で書かれています.もちろんこれは,英語は世界で広く使われている言語だから,というのもありますが,(これは私の体感ですが)開発者の多くは主に英語をネイティブに使っている方のような気がしています.
私が過去に使っていたライブラリやフレームワークも,英語圏の方,つまりシングルバイト文字を日常的に使っている方々が開発しているものが多くありました.そのようなライブラリやフレームワークは,しばしばマルチバイト文字が入力されることを想定していないことがあるようです.
そして,私のようなマルチバイト圏に住むエンジニアからしたら当たり前のことや感覚が,シングルバイト圏に住むエンジニアには伝わりにくいなと感じることがありました.
本セッションでは,実際にライブラリやフレームワークに「マルチバイト文字」に関するプルリクエストを作ったりディスカッションしたりした経験を元に,自分や他の開発者が直面しているライブラリやフレームワークの課題をいかに上手くコミュニティに伝え,世界で広く使われる OSS に少しでも貢献できるエンジニアになれるか,ということについてお話します.
Guzzleに代表されるHTTPクライアントは、PHPからHTTPリクエストを送受信するために便利なライブラリですが、そのまま取り扱うとライブラリとの依存度が高まってしまいメンテナンスコストが上がります。そこで一般的にはラッパーを用意します。
LaravelなどのフレームワークではHTTPクライアントのラッパーが用意されていますが、そんなものは使わず、ラッパー自作しましょう。
自作することで、HTTPクライアントの依存をしっかり見抜く力が付きます。
このトークでは、Guzzleラッパーを自作しながら、HTTPクライアント・リクエスト・レスポンスのそれぞれの持つ情報が何の役割を持っているかを確認し、何に依存すべきかを考え、学んでいきます。
いちばん大切なことは「落とし所を決めて前に進める力」でした。
今回は、新卒1年目がPHP5.6から7.4へのPHPアップデートを主担当した中で学んだ「アップデートの難しさ」について語ります。
言語のアップデートはプロダクトに対する変更の影響範囲が極めて大きいです。そのため、プロダクトの技術的側面に詳しくないと壊れるポイントがわかりませんし、事業的側面に詳しくないと壊してはいけないポイントがわかりません。
また、とれる施策がたくさんあり明確に意識しなければやることがどんどん増えてしまいます。これに対応するためにビジネスサイドならびに現場エンジニアとの会話を重ね、「なぜアップデートを行うのか」を明確にしていきました。
今回は、PHPアップデートを行う中で見つけた「こうしておけばよかった」近道を話します。
型、付けてますか?
型なしは心のゆるみ。プログラマたるもの、型付けは帰宅したら脱いだ靴を揃えるくらい自然に行なう所作です。
入力に型がなければ、すべての処理を安全に実行することはできません。
このトークにおいては標準関数のfilter_var()とPHPStanによる静的検査によって型なしの値に型健全性と実行時安全性を両立させる考え方を解説します。
https://www.google.com/search?q="コピペプログラマー"
既存のコードをクリップボードにコピーして、然るべき場所に貼り付けることで、プログラミングを遂行することが出来ます。
それなのに、世の中ではそれを良しとしない風潮もあるぞ!とは、みなさんも感じているところではあると思います。
他方で、 composer require darekano/nankano-package
をしても、それを見て「なんなのコイツ」と感じる人は少ない気がするんですよね。
どちらも「目的(要求を満足させるための振る舞い)を実装するために、コードを再利用する」という点では差がないはずです。
同じコードを世の中に増殖させる・・・!
それなのに、なぜ前者は駄目で後者は許容されるのでしょうか・・?不思議です。
駄目と言われるからには、開発者にとって必要な何か(特定の品質特性)を損ねるし、問題があるのでしょう。
良しとされるからには、そうしたダメージを回避しているか、あるいは品質を向上させる働きがあるはずです。
このセッションでは、「みんなが言っている当たり前」を理屈で考えてみようと試みます。
★ コードの再利用とは
★ コードに対する進化、フィードバックとは
★ 目先の「書く」ではなく、もっと先の「読む」「書き換える」のための品質を獲得しよう
PHPカンファレンス2023ではトーク募集にforteeというカンファレンス運用支援ツールが採用されています。
そのfortee、2023年3月下旬からトーク応募時にChatGPTによる「AI診断」の機能が付きました。
この機能は、入力されたタイトルと概要からAIがより良いプロポーザルになる様に思ったことを言う機能です。
さてこの機能、本当に役立ったのでしょうか。
ログが取れている範囲で「一度でも機能を使った方のトーク採択率」を計算してその有用性を検証するとともに、forteeへのChatGPT機能実装についてお話しします。
お話しする内容:
・AI診断機能のトーク採択率への影響
・ChatGPT機能の実装方法
・今回forteeで使用したプロンプト
・プロンプトの改善でどの様な変化がでるか
目に見える効果が無かった場合、このタイトルは釣りタイトルとなり、トークは事実上「PHPを使ったシステムへのChatGPT機能の実装方法とシステムに組み込むプロンプトの検証」となります。
前回のPHPカンファレンス福岡2019で「JAMstackアーキテクチャを用いたモダンWebサイト開発」というタイトルでFusicのテックブログにJAMStackアーキテクチャを取り入れた話をさせてもらいました。
あれから約4年ほど経ち、静的サイトジェネレーターをGridsomeからAstroへ移行しました。
Astroは最近注目されているWebフレームワークの一つで、「Astro Islands」というWebアーキテクチャパターンにより、不要なJavaScriot読み込みを無くし、高速なWebサイトを実現できます。
移行によって得られた最適化効果により、ページの表示速度が向上し、Lighthouseのスコアが満点のページ、または満点に近いスコアのページを生成できるようになりました。
体感でのページ表示速度もさらに速くなったと感じます。
本セッションでは、移行の経緯、Astroを選択した理由、移行時の苦労、今後の課題についてお話します。
Github ActionsでDockerイメージをビルドしてデプロイしています。
当初、Dockerイメージのビルド時間がとても長く、デプロイまでに時間がかかってしまっていました。
そこで、Dockerfileを見直しレイヤーキャッシュを意識するようにしたところ、コンテナビルドの時間を短縮することができました。
Dockerイメージビルドにおいて、レイヤーキャッシュを活用することはビルド時間を短縮し、開発効率を向上させることにつながります。
本トークでは、
という内容に触れつつ、Dockerのレイヤーキャッシュを利用したイメージビルドの方法やビルド時間を短縮するための方法について説明させていただこうと思います。
オンプレだったPHPアプリケーションをコンテナ化してWEBとバッチをクラウド化(AWS)しました。
今まで全くインフラの仕事はしておらず「インフラをしてないからわからないこと」が怖かったり、課題にぶつかった時に何もわからない自分を変えたい!!と思っていました。
そして機会があったため手をあげてSREと協力しながら実現させました!
今回私がまるっとインフラ周りを経験したので「普段アプリケーションをさわってるけど、インフラもやっていきたいんだよなあ・・・」と思っている人がはじめの一歩を踏めるような「やわらかい説明」でインフラの話をします!
■ 話すこと
クラウド化で発生する作業ってなんだっけ?(ECS / Docker / デプロイ / ... )
実際のタスクを進める上での悩み・詰まりポイント
クラウド化後に起こった想定外だったこと
■ 想定する聴衆
「インフラ興味あるけどなんもわからん」と思っている1年前のアプリエンジニアの私向けに作ります
総合して初学者向けです
みなさん、テストを書く際にどうやってテストデータを用意していますか?
PHPのフレームワークであるLaravelではfakerphp/fakerを使用し、簡単にランダムなテストデータを生成することができます。また、メールアドレスや人名、絵文字などを作成するように指定することもでき、大変便利なライブラリです。
しかし、何でもかんでもランダムにテストデータを生成していると、テスト対象のロジックをテストの中で実行し、アサーションをするといったことを意図せずしてしまうことがあります。
また、ランダムなテストデータを使っているからといって境界値テストを怠ったり、Property based testingのようなテスト観点が抜け落ちたりすることがあります。
本トークではFaker(ランダムでテストデータを生成するツール)を使用しない方がいいテストや、境界値テスト、Property based testingについてお話しします。
プロジェクトでスクラムに倣った開発をしてみて、私はスクラムマスターとしての役割で半年間運用しています。
チームメンバーはアジャイル開発について言葉は知っていたし、「スプリント」でのタスクの回し方、「レトロスペクティブ(ふりかえり)」などはスクラムっぽく回した経験はありました。それにさらに「リファインメント」「スプリントレビュー」などをやってみました。しかしルール通りにできないところもあり、悩みました。そして自分達のPJにFitするにはどうしたらいいだろう?を考えて工夫して取り組みました。その話をします。
■ スクラムとは(ゆる〜く)
■ プロジェクトで大事にした「アジャイル開発」の要素
■ 定義通りにやれなかったところ、Fitさせるために取り組んだこと
・きちんとしたプロダクトオーナーを依頼できない問題
・スプリント中にぽろぽろ出てくる「考慮不足」「新たなタスク」がでてくる問題
・タスクの依存関係のせいで暇な人がでてくる問題
■ アジャイル開発をキチンと採用してみて解決されたプロダクトの課題
■ 想定する聴衆
アジャイル開発を回している人
アジャイル開発を回してみたい人
アジャイルの概念はなんとなく知っている人
PHPカンファレンス福岡2023へのプロポーザルを提出するにあたり、
社内のメンバーに何か聞きたいことがあるかヒアリングしました。
結果「打ち合わせがすごい」「打ち合わせのコツが知りたい」という声をもらったので
自分の打ち合わせに関する技術を言語化できればと思います。
打ち合わせは非常にコストの高い業務です。
参加メンバーも多く、メンバーの時給を合算すると意外に多額の予算を消費してしまっています。
打ち合わせの品質を向上すれば、業務全体の生産性は間違いなく上がるでしょう。
下記のようなテーマに沿って話せれば良いなと思っています。
例)
エンジニアの生産性には、優秀な人とそうでない人との間に大きな差があると言われています。
その差はどこからくるのでしょうか?
今回は「学習」という側面にフォーカスしながら、生産性の高いエンジニアであり続けるための戦略について考えてみます。
エンジニアの生産性の差は、ひとつには教わるだけの人と自ら学ぶ人との学習姿勢の差が反映されたものです。
自ら学ぶ人は常に教わるだけの人の先を行きます。それどころか「学び方を学ぶ人」はさらにさらに先を行くことになるのです。
技術・環境・ツールの変化が激しく既存のスキルがすぐに陳腐化してしまう現代において、「学び方の学び方」こそが重要なスキルになります。
このトークでは、エンジニアに欠かせない学び方の学び方と、自ら学ぶ集団の作り方について共有し、みなさんと共に考えていければと思います。
海外カンファレンスに登壇したいと思ったことはありませんか?Laraconは世界中のLaravelユーザーが集まるLaravel公式のカンファレンスです。
Laracon US, EU, AU, India, Onlineなど毎年に世界各地で開催されています。僕は留学経験などありませんが、今までに2回Laraconに登壇する機会をいただきました (Laracon Online 2022の動画)。英語がペラペラでなくても、面白いトピックと熱意さえあれば誰にでも登壇するチャンスはあります。このトークでは、Laraconへのプロポーザルの提出から、採択されてから本番までの準備、登壇本番までの経験談などをお話します。海外カンファレンスでの登壇に興味がある方にとって、一歩を踏み出すきっかけになれば嬉しいです。
皆さんはCTO、VPoE、部長、本部長などの役職に就いていたり、キャリアの中でそういったロールに就任することを目標としていますか?
一般的には、役職への就任はポジティブなものとして受け取られることが多いのではないでしょうか。
しかし、私を含めた私の周囲にいる前述のような役職に就いたエンジニアに話を聞くと、どうも本人が望んでいないのにそうなってしまったケースが多いです。
そういった事例を見聞きする中で、本人が望む望まないに関わらず役職に就いてしまうエンジニアの共通点を理解してきました。
PHPカンファレンスに出席するような勉強熱心な方は、出世などせずにIndividual Contributorとしてキャリアを続けたいと考える方も多いのではないでしょうか。
実は、そういった指向の方こそが役職に就いてしまう傾向があると私は考えています。
本トークでは、私がキャリアの中で出会ってきた「気づいたら役職に就いていた」ソフトウェアエンジニアのケースを元に、そういったキャリアを望んでる方には今後目指すためのヒントを、役職に就いてしまった方には出口戦略について考える機会を作れたらと思います。
エンジニアは継続して勉強する必要があると言われています[要出典]。ただじゃあなにをどうやって学ぶのかはあまり教えてくれません。コードを書いて公開すればいいよとか、本を読むといいよとアドバイスはしてくれるものの、具体的な行動に移すのが難しいなあと感じます。
そんなふうに思っていた自分は今では、年間で、本をたくさん読み、ポッドキャストをたくさん聞き、いろいろな勉強会に参加していました。私が実践している楽しく勉強ができる方法を紹介します。