現代のコンピュータはハードウェアから私たちプログラマが書くプログラムの動作までの間が多くのレイヤーに分けられて動作しています。
レイヤーは自分より下を抽象化し、下のレイヤーを詳しく理解しなくても多くの場合プログラマはプログラムを書けます。
一方、プログラムが期待した様に動作しない時には下のレイヤーの動作の理解が問題の解決の助けになることもあります。
このトークでは私たちが愛するPHPをスタート地点にして、「CPUによる"プログラム実行"」「 PHPやJavaとC言語の根本的な違い」など、コンピュータプログラムがどの様に動作するのかを解説します。
コンピュータのレイヤー構造を理解すると、いままでは見えていなかった角度からプログラミングを楽しめるようになります。
このトークを通じて、低レイヤーが好きになったり、いろいろなレイヤーで面白いことをしたりする方が増えることを期待しています!
世の中には様々な技術が存在します。
皆さんはその中からどのような基準で技術を選定していますか?
そしてどのような環境で開発をしていますか?
本セッションでは、テックリードとして行ってきた、技術選定や開発環境の整備等について、どのような取り組みをしてきたのか、成功談や失敗談と共に解説いたします。
本セッションを通じて
「どういう基準で技術選定をすればいいかわからない」
「コード品質をどのように保てばいいかわからない」
「テックリードって何をしたらいいかわからない」
といった方が参考にできるような時間を提供いたします。
概要
PHPを用いてサービスを提供しているPR TIMESの機械学習を担当するエンジニアが通っているプロポーザルの秘密を探ります
対象者
話すこと
話さないこと
皆さんは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サービス開発・運用のちょっとした局面で役に立てば幸いです。
拙者、いわゆるマイクロ法人。複数の現場に片手片足から突っ込みまして、主にクラウドインフラ関連箇所を手伝っております。
そんな自分が、比較的最近で遭遇してきた難局、それらをどう切り抜けてきたのか、はたまた妥協してきたのか、といった事例をお話しします。
現時点(2023/9/11)では、以下のような経験をお話しできます。
Composerを使用する際にも登場するおワードとしてオートロードがありますわ。
autoloadはお名前空間の指定により、おクラス名をお自動解決する為の機能ですわ。
しかし「実際にどうやって動いているのかよく分からないぞ」というお気持ちでなんとなく使っている方もいるのじゃなくって?
こちらのおトークでは、vendor/autoload.phpのお中身を見ながらComposerがオートロードで何をしているのかを紹介いたしますわ!
「標準的なバス情報フォーマット(GTFS-JP)」オープンデータ(一部条件付き公開データ含む)を活用した無料の時刻表情報サービス「バス時刻検索」(CakePHP使用)を2022年9月に新規公開し運営しています。
素材のGTFS-JPデータを毎日ダウンロードし、更新を検知時に加工しDBへ取込みを行いますが、基本的にPHPプログラムで行っています。
今回は、毎朝最新版が公開されるバス会社もあり、更新データ量が大きく、DBへ反映が高負荷な状況にどう対処しているか?についてお話する予定です。
◇参考情報:ある日の都営バスGTFS-JPデータ(全国でも大きめ)は毎朝4時台に更新される上に、そのテキストファイル15個のサイズが計「79.7 MB」もあり。
(100万行越えのファイルもあります!)
その他、予期しないエラーや問題等をどのように解決したか等を語ります。
現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?
このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。
git init した際に構成される.gitディレクトリの中身について
GitHub上にあるgit/gitのソースコードを覗いてみる
実際にgit addとgit commitをPHPで実装してみる
新型コロナウイルス感染症が5類に移行したことで世の中的には3年ぶりの平穏を取り戻しつつある今日この頃、これまで開催が難しかったオフライン勉強会も少しずつ増えてきています。
言い換えると、これまでオフラインイベントに参加してこなかった人でも2023~24年はコミュニティに簡単に溶け込める年であるということです。
古参も新参も大歓迎のこのチャンス、逃す手はないと思いませんか?
このトークでは実体験をもとに、新卒2年目の新米PHPerがオフラインイベントに実際に参加して感じたことについてお話ししようと思います。
現地で人と話してみたいけど、やっぱり怖いよーという人
PHP本体のソースコード、気になりませんか?
普段使ってるPHPがどうやって動いているのかを知りたいけど「なんか難しくてよく分からない」という方、その気持ちよく分かります。
このトークでは実体験をもとに、php-src解読能力を0から1にしてみようと悪戦苦闘した話をしようと思います。
Fiber は、PHP 8.1 から導入された stackful な coroutine です。
ここで一度、Fiber の実装を PHP の処理系レベルまで追いかけることで、Fiber が何であるか、そして、裏で何をしているのかを理解することにしましょう。
Garbage collection (GC) とは、確保したメモリ領域を適切なタイミングで解放する仕組みのことです。
メモリが比較的潤沢になった今でも、メモリ溢れによるサーバ障害は決して珍しくありません。
PHP における GC を理解し、メモリを意識したプログラミングをすることで、本番サーバを夜中に落とさないようにしましょう。
私は新卒エンジニアとしてスクラムに関心を持ち、Certified ScrumMaster (CSM) 資格を取得しました。そして、大規模プロジェクトにおいて、先輩のスクラムマスターがスクラムを導入していく様子と、その変遷に携わった経験を通して得た知見を、このセッションで皆さんと共有したいと考えています。
初期段階では、職能ごとにチームが分割され、コミュニケーション不足と手戻りが増加しました。後に他のチームにエンジニア兼スクラムマスターがアサインされ、チームビルディング、振り返り、他チームとのコミュニケーションの機会が増え、プロジェクトにポジティブな変化が生まれ始めました。
このセッションでは、新卒エンジニア視点からの具体的な経験とスクラムの文化を持たないチームにおいて、緩やかなスクラム導入を支援するスクラムマスターの動きについてもお話しします。
2023年はコロナ禍から日常が戻り始め、様々なテックカンファレンスが開催されて、その楽しさや重要性を皆が再確認した年でした。それを受けて2024年は各地でPHPカンファレンスの開催が予定されています。
2018年と2019年に全国で開催されたPHPカンファレンスにおいて、紙の台紙を用いたスタンプラリー企画を私は実現しました。せっかくなので2024年もなにかやりたいのですが、台紙の用意やはんこの発注など面倒な作業が多いので、以前と同じ方法は取りたくありません。
そこでスタンプラリーをウェブサービスとして実装し、みなさんに使って頂くことにしました。PHPカンファレンス北海道2024はその初お披露目になる予定です。果たして快適に動作するのか、乞うご期待。発表ではその技術解説やインフラ構成についても話す予定です。
Laravelでどのように書くと脆弱性のある書き方になるのかを実際のコードを交えて解説します!
主に下記の脆弱性について話そうと思っています。
・XSS
・CSRF
・SQLインジェクション
・OSコマンドインジェクション
など
弊社ではエンジニアの研修カリキュラムで独自フレームワークを作っており、研修用のPHP独自フレームワークの作り方を詳しく解説します!
MVCの仕組みなどをちゃんと理解するにあたっても良い勉強になると思います。
具体的に自作する内容は下記です。
・routing
・CSRF対策
・Cotroller
・Model
・バリデーション
オブジェクト指向プログラミングにおいて重要な概念となる「SOLID原則」 。
本セッションでは、自分が違反して書いてしまったコードを例に、SOLID原則を紹介していきます。
多くの書籍でSOLID原則に関する具体例が示されていますが、このセッションでは「実際の失敗例」を通じてSOLID原則を理解していただこうと考えています。
自分がミスってしまった実装例を、時間の許す限り赤裸々に公開します!!
みなさん、PHP上のEnum値はデータベースにどのような値で保存してますか?
数値型? DB上のEnum型? それとも文字列?
「いやいやw文字列で保存したらデータ量が無駄やんw」
「変な値入れられたらバグるやんw」
「速度的にどうなん?w」
って声もあるかもしれません・・・
それでもなお僕は言いたい
「Enum値は文字列で保存してクレメンス!」