「テストを書くことは重要だと分かっているが、具体的にどこから始めれば良いか?」という疑問に答えるために、実際のコード修正や機能追加のような日々の開発タスクに隠れている、テストを書くきっかけを探ります。
具体的なバグ発生事例を活用し、それを防ぐためのテスト作成方法を紹介します。さまざまな状況をテストの観点から見直し、テストを書くきっかけ作りを目指します。
対象者
突然ですが、皆さんの現場のPHPはバージョンはいくつでしょうか?
PHP8.0も(カンファレンス開催時には)EOLとなった今日。
CIで静的解析やユニットテストが回り、デプロイは自動化され、Rectorでライブラリは常に最新、エディタはPhpStorm一択!といった現場ばかりではないのがPHPの現場ですよね。
現実には様々なしがらみからレガシィ化してしまったコードベースは存在していて、そんな現場で奮闘するPHPerもいるはずです。
このトークでは3年前、現場に配属された時に絶望していた自分に対して教えたいと思う明日から使える(かもしれない)取り組みを紹介します。
異業種からの転職、一時期流行りましたね。
私もブームからは少し遅れたものの、異業種からITに転職してきました。
「ある動画」を見たことをきっかけに参加しはじめたPHPのコミュニティからは沢山のものを得られています。
このトークでは1人の異業種エンジニアがコミュニティ活動を通してどんなものを得てきたかを実体験を元にお話したいと思います。
1つの変数がいくつもの関数を経由し、それぞれでpreg_replace
が乱用されるようなレガシーコードに立ち向かっています。
機能追加するにあたり、既存機能がどのように動作するか理解することは非常に重要です。
このトークでは、そんな混沌としたレガシーコードの動作を理解するために実際に行なった方法について解説します。
話すこと
子育てをしながら新しい技術を学ぶことをとても大変なことです。
学ぶことに正解はないけど、模索しながら少しづつ自分の中でカタチができてきたのでそのことについてお話しします。
子育て中じゃなくても、みなさんの学び方に対するヒントになる何かをお伝えできればと思います。
Emacsは40年以上の歴史がある老舗のテキストエディタであるにも関わらず、非常に開発が活発で日々進化しています。
Emacs最大の魅力はカスタマイズ性であり、他のエディタの追随を許さないくらい優れています。
私はEmacsの設定を1万行程度しておりPHPに関してもヘビーカスタマイズしています。
今回のLTではオススメプラグインを紹介しつつ、Emacsでの開発体験が如何に素晴しいものか伝えます。
こんにちは。やまゆです。
みなさん、 new
してますか?私は、最近はあまりしていないです。なぜなら、インスタンス化はほとんど DI コンテナ に任せてしまうからです。お客様のプロダクトにも DI コンテナが含まれているのではないでしょうか?活用出来ていますでしょうか?
Dependency Inversion
、つまり 「依存性の逆転」 をすることで、より疎結合で柔軟性の高い設計を行うことが出来ます。
それを実現する Dependency Injection
、つまり 「依存関係の注入」 をするのが DI コンテナ
です。
今回は以下の内容を話してみたいと思っています。
MySQL や PostgreSQL は非常に安定した信頼できるプロダクトです。これまでの数々の実績を見てもそれは確実でしょう。
しかし、 IT 業界の規模が急速に拡大し、クラウドサービスが席巻している今、「1インスタンス1DB」を前提として設計されたそれらプロダクトには性能限界が来ています。つまり スケーラビリティの問題 です。
その問題を解決しようとしているのが Google Spanner や PingCAP TiDB などの NewSQL と呼ばれる新時代のリレーショナルデータベースです。
今回はその中でも TiDB に焦点を当てて、 MySQL や Spanner と比べたメリット/デメリットを実際に使って検証します。
対象者
「なんで PHP をメインで書いているのに、 JavaScript(TypeScript) も一緒に書かないといけないんですか! React ってなんですか!今は Svelte が良いって聞いたけどじゃあどれ使えばいいんですか!」
という問題を解決するかもしれないのが Laravel Livewire です。これを使えば、 PHP でフロントエンドのロジックを記述することが可能です。
今回は、 LaraconUS 2023 で発表された Livewire v3 と関連パッケージを使って、(ほとんど) PHP だけでフロントエンドロジックも実装してしまう技術を紹介します。
対象者
データベースから結果セットを取得するデザインパターンとして、
Active Record パターンと Repository パターン(によって抽象化された Data Mappter パターン)がよく知られています。
これらのパターンは一体どういうもので、どのようなトレードオフによって選定されうるのかを解説します。
実質的には、PofEAA に記述されているパターンを PHP で再翻訳することになります。
PofEAA はあるパターンの説明に、別のパターンを使用することが多々あるため、その「らへん」についても紹介します。
エンジニアとしての道を歩む中で、ときおり「私はつよつよエンジニアと言えるのだろうか?」という疑念が私たちを襲います。
初心者の段階を脱し、中堅エンジニアとしても充分な経験を積むと、周囲からの期待も高まり、自身がそれに応えられるのかという不安が生まれることもあります。
自分に自信をもてないまま周囲から「あの人は強い」と言われるのは、少し毛恥ずかしいことですよね。
心の中では「PHPなんて生ぬるい言語を使っていてもつよつよエンジニアと言えるのか?」と不安がよぎることもあるでしょう。
このセッションでは、エンジニアとしてのキャリアのなかで、どのような経験や学びが自身の成長に繋がり、どうすれば自身の強さを発見できるのかを考察します
エンジニアとしての道を歩む皆さんが、自身の強みを最大限に引き出し、自己評価に自信を持ち、いつか「つよつよエンジニア」と自称できるようになる手助けをします。
私たちが働く IT の業界は変化が激しく、既存のスキルが数年ですぐに陳腐化してしまいます。
変化のなかで生産性の高いエンジニアであり続けるためには新たな事柄を戦略的に学んでいくことが重要です。
本セッションでは戦略的な学習習慣を身につけること「学び方の学び方」についてブレイクダウンして考察していきます。
全ての開発者が避けたいのが、デプロイ後に重大なエラーや問題が生じることです。そこで当セッションではリスクを抑制しながら、柔軟かつ効率的に変更を適用する手法として、リリースフラグとプログレッシブデリバリーの活用法をご紹介します。
まず、WEBアプリケーションのリリースフラグの導入と基本的な運用方法を解説します。その上で、リリースフラグを用いた段階的なリリース、未公開の新機能のテスト、使用者に対する新機能の公開調整等、安全で効果的なデプロイのためのタクティクスを実例を交えながら説明します。
次にプログレッシブデリバリーに焦点を当てます。ローリングデプロイ、BGデプロイ、カナリアリリースといった、リスクを分散して新機能を安全にリリースする手法の具体的な活用方法について解説します。
このセッションを通じて、参加者の皆様がデプロイに関連する課題に新しい解決策を見つけられることを目指します。
PHPerのみなさん、皆さんの関わっているサービスはどこにデプロイしていますか?
AWS / GCPをはじめとする様々なクラウドサービス、レンタルサーバや専用サーバなどいろいろな環境を利用されているとおもいますが、PHPを利用したサービスで、「Azureを使っているよ!」って話はあまり多く公開されていないように思います。
では、PHPのプロダクトをAzure上で提供するのは困難なのかというと、全然そんなことはなくPaaS系のサービスを利用することで、運用コストをあまりかけずに提供することが可能です。
このセッションでは、PHPのプロダクトをホストする場合に利用可能なサービス・周辺サービスなどを、PaaS系のサービスを中心にご紹介するとともに、実際の運用でCI / CDなどをどのように構築しているかなどもあわせてご紹介します。
みなさん、Github Actions活用していますか?
昨今では、Github Actionsを使って自動テストや自動デプロイなどを実行している方はとても多いと思います。workflowを作成時に利用するActionは、Githubや各種ベンダーさん、OSSなどで様々な有用なものがたくさん公開されています。しかし、必要なActionがない場合、runアクションにコマンドを書いたり、シェルスクリプトを用意したりしてカオスになっていませんか?
このセッションでは、Github Actionsで動作する、独自アクションの作成方法や、既存のActionをカスタマイズする方法などをご紹介します。
私は何か新しいことを学ぶたびに、それをLT(ライトニングトーク)イベントで発表することが好きです。このセッションでは、コミュニティーに対する興味と学習のきっかけについて話します。
私は、学生の頃にはコロナ禍や技術力不足などの理由で、コミュニティーのLT会に参加できなかった経験があります。しかし、社会人になってからはその夢を実現させる機会があり、それが私にとって非常に特別な時間でした。ここで、私にとってコミュニティーで発表することや参加したい、関わりたいと思うことが、学びのきっかけであり挑戦のきっかけであると感じました。
勉強するきっかけやモチベーションが湧かなくて悩んでいる方に、私なりの学習に対するモチベーションの維持について共有したいと思います。
複数あるファイルの中から、いくつかのファイルを選択して、ZIPファイルとしてダウンロードしたい。
ZIPファイルの生成パターンは膨大であるため、その都度生成する方針にしたい。
そんな、”ファイルを選択してZIPダウンロードする機能”を 3 つの Lambda + S3 + DynamoDb で作りました。
本トークでは、このZIPダウンロード機能を実装するにあたり、AWSのサービスを使ったアーキテクチャや直面した課題などについてお話します。
私は中学生のMSXというパソコンのCPUであるZ80のマシン語をプログラミング言語として体験していました。
25年後の2016年、PHPで書かれたゲームボーイエミュレータのコードを読んで衝撃を受けました。ゲームボーイのCPUはZ80をベースに開発されたものであり、エミュレータで実装されていたのはまさにそのZ80の命令だったのです。
その後、書籍「CPUの創りかた」で紹介されている4ビットCPU TD4を実装したり、Z80のハードウェアエミュレータを開発したりしています。
このトークでは私がこの数年で触れてきた4形態のCPUについて解説し、CPUの楽しさをみなさんにお伝えします。
どれも"CPU"ですが、それぞれ開発時に見える世界が全く異なっています。
このトークを通してみなさんがCPUの設計や動作に興味を持ち、いっしょにCPUについて語れることを楽しみにしています!
私はこの数ヶ月、趣味プロジェクトとして1980年代に栄華を誇った名作CPUである"Z80"のハードウェアエミュレータを開発しています。
これはZ80で動作しているコンピュータからZ80を取り外して、代わりに自作のZ80ハードウェアエミュレータを取り付けて動作させるというもので、Raspberry Pi に自作のハードウェアを接続した形になっています。
このトークではZ80ハードウェアエミュレータの解説を軸に、CPUの作り方や、その楽しさをお伝えします。
主なトピック:
・CPUを作るために必要なもの
・ソフトウェアエミュレータとハードウェアエミュレータの違い
・Raspberry PiでCPUを作る方法
CPUを作ってみたい方はもちろん、コンピュータの仕組みを理解したい方や、プログラムが実行された時にコンピュータの中で何が起きているのかを知りたい方などにもお楽しみ頂けると思います。
「コンピュータは0と1しか処理できない」とよく言われています。
ビット演算があったり、浮動小数点演算があったり、文字コードが16進数だったりと、PHPerのみなさんもなんとなく実感としてはあると思いますが、なぜ「0と1しか処理できない」のでしょうか。
このトークではアナログの世界・電気回路でデジタルの世界・コンピュータ処理がどの様に表現されるのか、私たちがC言語やPHPで書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。
ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。