API Platformは、SymfonyをベースとするPHP製のオープンソースAPIフレームワークです。
Symfonyアプリケーションにアトリビュートを1行追加するだけで一瞬でREST APIを作れてしまう優れもので、
Symfonyのエコシステムにおいては既に決定版となっています。
しかし、ある程度複雑なことをしようとすると途端にフレームワークについての深い理解が求められたり、
痒いところに手が届かず強引なワークアラウンドが必要になったりするという面もあり、入門と実戦の間には大きな隔たりがあります。
このトークでは、API Platformの導入方法から基本機能の概要、さらには実践投入に向けた各種ワークアラウンドや実装テクニックを、
実際に動作するデモをお見せしながら丁寧にご紹介します。
API Platformの実戦投入、あるいはその検討の一助になれば幸いです!
良いコード、読みやすいコード…欲しいですよね
経験を積むほどに、コードを書くのは上手くなることでしょう
ですが!!
「1発で綺麗に書ける」とはならないのです
それどころか、「書き直す」のが当たり前になっていきます
つまり、リファクタリングです。長く付き合えるコードを生むには、コイツが欠かせません
みんな、色んな所で、昼夜を問わず、当たり前にリファクタリングに手を出しているのです
1回味わったら、きっと忘れられなくなりますよ
このトークでは、「初めてのリファクタリング」をテーマに、最初の1歩を踏み出すための武器を提供します
一緒に「めちゃ長ぇメソッド」を飼い慣らしていきましょう!
PHPのインストールは皆さんどうやっているでしょうか?
最近ですとDockerイメージを使ったり、Linuxディストリビューションのパッケージを使ったり、Homebrew使ったり、XAMPP使ったりなど、
配布されたバイナリを使うことが多いでしょうか。
PHPはC言語でできています。そのため、C言語をコンパイルする、という作業が必要です。
上述したバイナリとは、コンパイルされた成果物を指します。
実は、PHPのコンパイルは、手元でも行えてしまいます。
色々なツールが必要ですが、一つ一つ解説します。
PHPのコンパイルができるようになると、PHPへの理解が一つ深まります。
そういうわけで、コンパイルをしてみませんか?
アブストラクトマシマシ・シンタックス少し・ツリーマシマシ。このような呪文を見かけたことはありませんか。そう,二郎系ラーメンです。この呪文を「コール」と呼び,ラーメンの着丼前のトッピングとしてヒアリングされます。一見,二郎系ラーメンのコールは複雑そうに見えますが,ある一定の法則性があります。そしてスタッフは法則性に基づいて解釈し,ラーメンにトッピングをします。似たようなのを見たことがありますね。そう,お察しの通りプログラミング言語の構文解析器です。例えばramen(1, 2)という構文はramenという関数をコールし,1と2という引数を与えます。つまりトッピングです。このようにramenという関数の引数は 2つで…といった意味を与えるのが構文解析器です。
本トークでは,PHPで構文解析器で専らよく使われるAST解析を実装するにはどうしたらよいか,二郎系ラーメンのコールを題材として解説します。
近年、急速に"(コードの)質と(それの高さからくる開発)スピード"が注目されるようになってきました。
一方で「何故、"質とスピード"を求めるのか」に対するお話はあまり見かけません。
このトークでは「孫子の兵法」から見た「"質とスピード"は何のために必要なのか」、「"質やスピード"は本当に必要なのか」についてお話します。
このトークで得られる知見
このトークで話さない事
DDDを始めるにあたってしんどい気持ちになるのが「事前に用意しておくべきドメイン層のコードが案外ある」こと。
また、DDDを中心に据えた場合「ドメイン層のコードがどうあるかは本質ではない」とされ、具体的な指標がなく座りの悪い状態になりがちです。
"TacDDD"(タックディー)はそんな「ドメインの話に集中したいので、極力コード側に注力したくない」をお助けするライブラリです。
このトークでは"TacDDD"を用いる事で何が省略できるのか、どんな所の「質」が向上するのかについてお話します。
なんとなく口にしがちな「"品質"が高いコード」。
定義があいまいで要領を得ないため、すり合わせはおろか万人が万人の「願望する"品質"」の話に終始してきました。
一方で「品質」は工業規格としての定義があります。
このトークでは工業規格の定める「品質」に基づいて、「"品質"が高いコード」の定め方と達成の仕方についてお話します。
このトークで得られる知見
このトークで話さない事
PHP に FFI が導入されてから、どういう用途で使えばよいか悩んでいる PHPer も多いかと思います。
また、PHP FFI のマニュアルも理解しやすいかというと、ハードルは若干高いと言えるのではないでしょうか。
そこで本トークでは、PHP FFI を介したモジュールの呼び出し方の解説、自作 の C/C++ のモジュールの作成からの呼び出し方、 そして libusb と呼ばれるモジュールで USB で接続された機器の一覧を取得する実践的な方法など、どのように FFI を活用していけばよいのかを解説します。
現場で働くうえでよく分からん&ほぼ必須な要素としてGitが存在します。
とはいえ、gitについて調べても「 commit や push みたいな基本操作は分かるけど、深いところが何も分からん……」となりがちではないでしょうか?
このトークでは、ベテランエンジニアはなぜか知っている git 知識についてお話ししようと思います。
具体的な内容
git init した際に構成される.gitディレクトリの中身について
GitHub上にあるgit/gitのソースコードを覗いてみる
実際にgit addとgit commitをPHPで実装してみる
対象者
PHPやWebフレームワークのバージョンアップ、できていますか?
ながらくバージョンアップできていないものを一足飛びにバージョンアップしようとしたときに、今まで頑張ってUnitTest書いてきたからそれを頼りにがんばるぞ!と思っていたら、味方だと思っていたPHPUnitにいきなり背後から撃たれるという経験をすることになるかもしれません。
PHPやWebフレームワークのバージョンアップ履歴を確認し、それにどう対処すべきかということを事前にしらべていても、PHPUnit の変更を見ていなかったために、今まで頑張って書いてきたUnitTestで大量にエラーが出るという悲しい結果にならないように、PHPUnit の最近のバージョンアップの内容とその対処方法を紹介します。
令和では受託開発はオワコンで内製化の時代?駆け出しエンジニアに人気なのは受託開発より自社サービス開発?
世間では「自社サービスのエンジニアになりたい!」という声が大きく聞こえるようになりました。
私は受託開発フリーランスから自社サービス開発の社員エンジニアになり、エンジニア人生の中で自社サービス開発に携わっている期間の方が長くなりました。
キラキラした仕事のイメージで語られがちな自社サービス開発ですが、日々どんな仕事をしているかは意外と知られていないようです。
私が自社サービス開発のエンジニアとしてどんな仕事をしてきたか・見てきたか、そして自社サービス開発ならではのつらみ・苦しみ・楽しみについて話します。
キャッシュはパフォーマンスを劇的に改善する効果がある反面、一度使うと簡単にはやめられない複雑性と中毒性があります。
その特性から「キャッシュは麻薬」と言われ、安易な利用は忌避されています。
しかし、キャッシュがもたらすパフォーマンスの改善効果は無視することはできず、コンピュータの世界において有効活用されているのも事実です。
そこで今回は実際にキャッシュを使う時に陥りやすい問題を取り上げながら、実際の活用例を説明します。
生涯エンジニアを続けたい。
しかしインターネットを見渡せば凄腕のエンジニアばかり。
このまま、自分は生き残れるのだろうか...
そんな不安はありませんか?
職場では日々の仕事に追われ、それでも新しい技術を理解し、向き合って行かねばなりません。
もちろん一日は有限ですから勉強する時間も限られます。
そんな中、私がどうやって新しい技術を理解し、未来の技術を予測し、今の技術を身につけ、そして ユーザに価値を提供 しているか。そのために日々をどう過ごしているか。
そんな エンジニアとして生き残るための哲学 と 問題解決するために必要な習慣 を皆さんにお伝えします。
ピカソは言った。「優れた芸術家は模倣し、偉大な芸術家は盗む。」
先人の言葉を例に上げながら、課題を解決するエンジニアになるために誰もが見つける大切なことをお話します。
目の前に立ちはだかる削除フラグ......
削除フラグがアンチパターンであることは知っていても、目の前の削除フラグと付き合っていくしか無い...
そう思って諦めていませんか?
削除フラグを既存のアプリケーションに影響をできるだけ閉じて無くすことはできます。
テーブルから状態や属性を別のテーブルに移し、アプリケーションを壊すことなくリファクタリングしていくために必要なことを説明します。
レガシィコードと向き合い、リファクタリングして、目の前のプロダクトを改善している現場のテクニック、余すこと無くお話します!
何度も遭遇する PHP の「Allowed memory size ...」。しかし、結局解決方法がわからず、最後には memory_limit を -1 にしてその場を凌ぐという苦い経験をした方も多いのではないでしょうか。
PHP ではガベージコレクションもそれなりに発達しており、メモリを気にしないで書けるから良いと思っている人も少なからずいらっしゃると思います。
static はメモリ効率がいい… PHP 8.1 から導入された readonly などの機能を制限する書き方をすればメモリ効率がいいなど考えている方もいらっしゃるかもしれません。
そこで本トークでは、PHP では本当にメモリについて気にしなくていいのか。そして,どのようにすれば省エネにメモリを使えるのか。PHP のメモリ確保の仕組みや最適化の仕組み,そしてメモリ効率の良い書き方のヒントまで含めてお話できればと思います。
時折聞く抽象構文木。Abstract Syntax Tree (AST)とも言いますが,実際にはどういうものを指すのかイメージがつかない方もいらっしゃるかもしれません。PHP において様々なライブラリに利用されている nikic/PHP-Parser が AST の一つの例です。
そして AST はプログラミング言語を作る上では欠かせない概念です。しかし「プログラミング言語を作る」となるとハードルが上がってしまうと感じてしまいます。
実は AST 自体はそこまで難しい概念ではありません。そしてプログラミング言語を作るにとどまらず,AST を用いれば電卓を作ることもできます。そこで,本トークではプログラミング言語を作ってみたい初心者に向けて,AST とはどういうものか,PHP を題材としてオレオレ電卓を作りながら解説します。
PHPのソースコードを正確に検査したり、ソースコードの一部を書き換えたいと思ったことはありませんか?
PHPにはPHP-Parserという構文解析ライブラリがあり、静的解析ツールのPHPStanやリファクタリングツールのRectorはPHP-Parserをベースにしたプラグインでソースコードを検査したり、ソースコードを書き換えたりすることができます。
しかしながら、構文木を操作するには普段何気なくPHPコードを書く以上のプログラミング言語についての知識が求められます。この発表では構文木を取り扱う前提となるプログラミング言語についての知識、PHP-Parserの構造、PHPStanとRectorそれぞれの拡張方法と実例についても紹介します。