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会に参加できなかった経験があります。しかし、社会人になってからはその夢を実現させる機会があり、それが私にとって非常に特別な時間でした。ここで、私にとってコミュニティーで発表することや参加したい、関わりたいと思うことが、学びのきっかけであり挑戦のきっかけであると感じました。
勉強するきっかけやモチベーションが湧かなくて悩んでいる方に、私なりの学習に対するモチベーションの維持について共有したいと思います。
私は中学生の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で書いたプログラムの実行結果がディスプレイやスピーカーで認識できるところまでがどの様にできているかをお話します。
ふだんの活動ではあまり気にすることのないコンピュータの基本的な仕組みの話になりますが、このトークを聞いたみなさんが今までより少し解像度の上がった目でコンピュータを楽しめることを願っています。
世の中には様々な技術が存在します。
皆さんはその中からどのような基準で技術を選定していますか?
そしてどのような環境で開発をしていますか?
本セッションでは、テックリードとして行ってきた、技術選定や開発環境の整備等について、どのような取り組みをしてきたのか、成功談や失敗談と共に解説いたします。
本セッションを通じて
「どういう基準で技術選定をすればいいかわからない」
「コード品質をどのように保てばいいかわからない」
「テックリードって何をしたらいいかわからない」
といった方が参考にできるような時間を提供いたします。
皆さんはPHPアプリケーションにOpenAPIを導入していますか?
OpenAPIとは、HTTP APIの仕様を定義できる言語です。
自動ドキュメント生成やフロントエンドのクライアントコード生成、APIのモック化やバリデーションなど、API開発を支援する非常に強力な機能を備えています。
しかし、既にそれなりの規模のAPIを運用している場合、初期コストや導入難易度が高くなってしまうため、導入を諦めた方もいるのではないでしょうか。
本セッションでは、特定のフレームワークに依存せず、より低コストで安全にOpenAPIを導入するアプローチについてお話しします。
v0.1.1 というリリース初期の頃から、とある同僚によって試されたのを見て、その高速な動作に気が付き「この npm install が超遅いのどうにかしたい」を瞬時に改善した bun。
その bun の メジャーバージョン 1.0 が、2023/9/8 にリリースされました。
(なお今日は 2023/9/11)
以来、複業する自分が随所で、プロダクションには影響のないところから、「使えるどころ」を見出してきました。
このトークでは、npm スクリプトのラッピング、cdktf diff を bun run plan / cdktf deploy を bun run apply に置き換える、など、柔軟な発想で効果的に、高速で名高い bun を利用してきた事例をいくつか紹介します。
Webサービス開発・運用のちょっとした局面で役に立てば幸いです。
Composerを使用する際にも登場するおワードとしてオートロードがありますわ。
autoloadはお名前空間の指定により、おクラス名をお自動解決する為の機能ですわ。
しかし「実際にどうやって動いているのかよく分からないぞ」というお気持ちでなんとなく使っている方もいるのじゃなくって?
こちらのおトークでは、vendor/autoload.phpのお中身を見ながらComposerがオートロードで何をしているのかを紹介いたしますわ!
現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?
このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。
git init した際に構成される.gitディレクトリの中身について
GitHub上にあるgit/gitのソースコードを覗いてみる
実際にgit addとgit commitをPHPで実装してみる
新型コロナウイルス感染症が5類に移行したことで世の中的には3年ぶりの平穏を取り戻しつつある今日この頃、これまで開催が難しかったオフライン勉強会も少しずつ増えてきています。
言い換えると、これまでオフラインイベントに参加してこなかった人でも2023~24年はコミュニティに簡単に溶け込める年であるということです。
古参も新参も大歓迎のこのチャンス、逃す手はないと思いませんか?
このトークでは実体験をもとに、新卒2年目の新米PHPerがオフラインイベントに実際に参加して感じたことについてお話ししようと思います。
現地で人と話してみたいけど、やっぱり怖いよーという人
Fiber は、PHP 8.1 から導入された stackful な coroutine です。
ここで一度、Fiber の実装を PHP の処理系レベルまで追いかけることで、Fiber が何であるか、そして、裏で何をしているのかを理解することにしましょう。
Garbage collection (GC) とは、確保したメモリ領域を適切なタイミングで解放する仕組みのことです。
メモリが比較的潤沢になった今でも、メモリ溢れによるサーバ障害は決して珍しくありません。
PHP における GC を理解し、メモリを意識したプログラミングをすることで、本番サーバを夜中に落とさないようにしましょう。
私は新卒エンジニアとしてスクラムに関心を持ち、Certified ScrumMaster (CSM) 資格を取得しました。そして、大規模プロジェクトにおいて、先輩のスクラムマスターがスクラムを導入していく様子と、その変遷に携わった経験を通して得た知見を、このセッションで皆さんと共有したいと考えています。
初期段階では、職能ごとにチームが分割され、コミュニケーション不足と手戻りが増加しました。後に他のチームにエンジニア兼スクラムマスターがアサインされ、チームビルディング、振り返り、他チームとのコミュニケーションの機会が増え、プロジェクトにポジティブな変化が生まれ始めました。
このセッションでは、新卒エンジニア視点からの具体的な経験とスクラムの文化を持たないチームにおいて、緩やかなスクラム導入を支援するスクラムマスターの動きについてもお話しします。
弊社ではエンジニアの研修カリキュラムで独自フレームワークを作っており、研修用のPHP独自フレームワークの作り方を詳しく解説します!
MVCの仕組みなどをちゃんと理解するにあたっても良い勉強になると思います。
具体的に自作する内容は下記です。
・routing
・CSRF対策
・Cotroller
・Model
・バリデーション
みなさん、PHP上のEnum値はデータベースにどのような値で保存してますか?
数値型? DB上のEnum型? それとも文字列?
「いやいやw文字列で保存したらデータ量が無駄やんw」
「変な値入れられたらバグるやんw」
「速度的にどうなん?w」
って声もあるかもしれません・・・
それでもなお僕は言いたい
「Enum値は文字列で保存してクレメンス!」
このトークでは、アプリケーションエンジニアとデータエンジニアとの連携を捗らせるアイデアを紹介します。
この内容は間接的にアプリケーション開発する上でも役立つテクニックになるはずです。
元PHPer現データエンジニアの目線で、
「こうやっておけばあとあと楽だった!」「このおかげでめっちゃ捗ってる!」「作る時にここを気にしてくれるとうれしい!」
といった内容をお話しさせていただきます。
【トーク例】
・自動でER図を生成! SchemaSpy!
・賛否あり? Enum値は文字列で保存してクレメンス
・データパイプラインが止まっちゃった! XXする時は教えてくれ!
Composerは、デフォルトではPackagistというサービスからパッケージ情報の取得を行います。
Packagistのような役割を「Repository」と呼びます。
Repositoryについて知る事は、Composerが「何をするツールなのか」から踏み込んで「どう動いているのか」を理解する助けとなります。
「パッケージ検索やバージョン情報の管理・取得」「ライブラリのcomposer.jsonの意味」を把握できますし、「Composerと各サーバーとのやり取り」に関するライフサイクルも掴めます。
であれば!「Packagistみたいなものを自分で作ってみる」のは、良い学習材料になるのではないでしょうか!
このセッションでは、「PackagistみたいなRepositoryサーバーを構築してみる」をテーマとして、必要な概念・知識の説明とコードによる具体例の提供を行います。