Cybernetically enhanced web apps【Svelte】とは、一つのファイルにJavaScriptとかCSSとかHTMLをまとめて書いてエイッ!ってやるとWebアプリになるあのReactとかVue的存在です。
ではなぜここでSvelteの話をするのか? それは、何か使ってみたら便利で楽しかったしこれは内緒にしておこうとおもったけど、使う人が増えたほうがもっと便利になるので、ぜひ皆様もこの春PHPにSvelteをCyberneticallyにenhancedしてWebをappsしてみませんか?
今回は次の2つの事例を5分間でご紹介します。
・SvelteをPHPの非同期アーマーとしてREST装着したアプリケーション
・既存PHPアプリケーションへの追加UIとして、HTMLタグのデータ属性でSvelteコンポーネントを接続
※非同期アーマーという言葉はありません。
「OKグーグル」と声を掛けると家の電気やテレビをつけてくれるGoogleアシスタント、みなさんお使いでしょうか。私は毎日大声でGoogleに話しかけています。しかし声を出すのもダルいときってありますよね。そんなときはプログラムからGoogleに話しかければいいんです。
ところでプログラムからGoogleアシスタントにアクセスしようと思うとPythonかGoの事例が多いんですね。Googleアシスタントの裏側はgRPCなのでPythonやGoが多いのは自然っちゃ自然ですけど、PHPもgRPCの正式サポート言語(クライアントのみ)ですから、やればできるはずです。
そんなわけで、本トークではPHPからGoogle Assistant APIを使って「OKグーグル」してみましょう。他の言語より少し大変だったりしますが、PHPだってgRPCで遊べるんです!
コーディングの中でいわゆる「共通化」について考えるとき、プロダクトコードとテストコードではやや違う観点が必要になるようです。テストコードを書き始めて間もない現場には「プロダクトコードは書き慣れているがテストコードには不慣れ」なメンバーが多く、レビュー時などにこの勘所をうまく説明できず困ることが時折ありました。
最近、DRY (Don't Repeat Yourself) 原則と対になる DAMP (Descriptive and Meaningful Phrases) 原則という概念に触れたことで、この状況を腑分けし言語化できるようになってきました。DRY と DAMP について最近考えていることをお話ししたいと思います。
コードフォーマッターや静的解析ツールなどを使ってコードレビューの手間を減らすことの重要性はしばしば強調されます。しかし、ツールによるコードレビューの自動化には、単なる工数削減だけでなく「意見の衝突、およびそれによる対人ストレスの緩和」にもどうやら効果があるようです。
「デウス・エクス・マキナ」パターンは、この仮説にわたしが勝手に命名したものです。この仮説に至るきっかけになった現場でのエピソードや、関連して考えていることについてお話ししたいと思っています。
このLTではFFIやANTLRによる言語実装など、あらゆる手段を使ってPHPからGoを呼び出す方法を紹介します。
実用性は皆無です。
PHPを通じて技術を楽しむLTとなっております。
初心者も楽しめる、視聴者参加型の高速 LT クイズと解説です。
易しいレベルから、殆ど知られていない難しいレベルまでを4択クイズで高速 LT します。
チャットや Twitter などでどんどんお答えください!
初心者はプログラミングを始めていくと、記号が意外とググりにくいということに気づくと思います。
また他の言語を習得している上級者は、突然聞かれると一瞬他言語と混ざっちゃってわからなくなることがあると思います。
高速で問題を出されると、初心者も上級者も楽しめると思った次第です。
気分転換の頭の体操にいかがですか?
以下、例題です。これを問題文を読むところも含めて10秒程度で次々解いていくイメージです。
問題:べき乗 (例:2の3乗など)を計算する記号はどれ?
A. ^
B. **
C. ^^
D. 記号はない(pow() 関数で対応)
php の基本の foreach 。
しっかり正しく記述できていますか?
foreach は簡単そうに見えて柔軟すぎて、結局難しかったりします。
こんな悩みはありませんか?
・foreach の中に if 文がたくさん詰まってしまう。
・Promise を foreach で回すのが難しく感じる
・同時実行上限
・終了時上限の付与
・Generator が苦手
・遅延処理が書けるって聞くけどよくわからない
・結局 foreach で終了までを全部詰め直すから読みにくくなってしまう
それらを解決する概念が下記の3つです。
・map処理
・並列処理
・遅延処理
この概念をいい感じに foreach で説明できたらいいなって思います。
スタッフには興味あるけど「スタッフってつよつよエンジニアばかりなんじゃないの?」とか「自分なんかにもできるのかな?」なんて不安を感じて応募を躊躇ってしまっていませんか?
いつもお世話になるばかりだった私が、当日スタッフに応募しようと思った動機と、実際にやってみてどうだったかをお話ししたいと思います。
phpを書く人はphpstormを使う人が多いと思いますが、別のテキストエディタでも同じようなことができます。
私はemacsユーザなのでemacsユーザならではの話をしたいと思います。
具体的には以下のような話
2019年11月にGAとなった Cloud Run。
それから2年となる最近、とある案件で「GCPで、Laravelアプリを」というオーダーに巡り会いました。
「AWS Fargate 上に Laravel プロダクトを載せる」ことをやりきっていた自分は、
Compute Engine ではなく Cloud Run 上に、Terraform module を利用して構築することにしました。
やると決めてから、久しぶりのGCPのインフラを、初めてIaCで構築していきました。
今のところ、順調に進んでいると思います。
このLTでは、その過程で感じてきた
といったあたりの、新サービス構築試行事例をご紹介したいと思います。
皆さんはPHPでの開発でPredefined Interfaces(定義済みInterface)を使っていますでしょうか?PHPにはIteratorやStringableといったシンプルですが便利なInterfaceが用意されており実装することで、独自のクラスをPHPのプリミティブな型と同様に扱うことができます。どうやってPredefined Interfacesを使うのか、どんなメリットがあるのかを解説します。
Laravel Octane(Swoole版)でPharをつかってワンバイナリアプリケーションにして運用してみた話です
過去、PHPカンファレンス北海道(2019)にて
「pharによるワンバイナリアプリケーションの可能性を探ってみた」
でお話ししましたが、そのリベンジ(現実版)になります
Laravel OctaneをPharで固めたときにつまづいた話を中心にお話しします!
PHPだけど、Buildして(Pharでpackして)、Deployして運用してみよう!
さくさく開発を進めるにあたってコンテナイメージのビルドには時間をかけたくありません。
typoをなおしただけなのにvendorのインストールを待っている時間はじれったいです。
キャッシュを使って時間短縮しつつ、完成物は小さくまとめる方法を考えます。
時間があれば、継続的アップデートやLambdaで動かすPHPコンテナへの適用についても触れます。
レガシーバージョンのPHPから、最新バージョンのPHPへ移行したい方へ
PHP5.3.2より前のバージョンのPHPだと、setAccesibleが使えません。
そのため、private, protectedなメソッド、プロパティをテストしたいときは、本体をpublicにするしかありませんでした。
「setAccesibleを使いたいからPHPのバージョンアップをしたい」でも「PHPのバージョンアップをするためにはsetAccesbleを使ってユニットテストを書かないと行けない」というジレンマにずっと苦しんでおりました。
しかし、今回runkitを使うことで、PHP5.3.2より前のバージョンのPHPでも、非公開なメソッドのテストをすることができるようになる方法を考案しました!
これを導入すれば、テストコードの実装がどんどん進みますよ!
プロダクトコードを書くと対になって書かなきゃいけない「テストコード」。今まで、「ルールとして存在していたからテストコードを書いていた私」が「あれ・・・?テストコードあるとめちゃくちゃ安心なのでは・・・?」「テストコード・・・スキ!!!」となった経緯を話します!
この発表で「テストコード書くのが好き!」「うんうん、そうだよね、テストコード最高だよね」となってくれるのを願い・・・!☆彡
普段お世話になっているフレームワークですが、その中身についてちゃんと見てますか?私は全く見ていませんでした・・・。
今まで恩恵を与えてくれていたフレームワークがどのように実装をされているかを見ることによって、より「スキ!」となりたい!
なので!今回、Laravelの実装を読んでみて、「ここの処理スタイリッシュだな〜〜」「学びがあった〜〜」となった部分をシェアハピします!!
この発表を聞いて、「自分もちょっぴり読んでみようかな」って人が増えると嬉しいです!
PHPStan を入れると静的なコード解析が出来るのでとてもプロジェクト関わる開発者全員が恩恵を受けられると思います。
ただしある PHP stan は最初から入れている場合は良いのですが、ある程度アプリケーションが大きくなってからだと導入が難しい、もしくは出来たとしても大きなコストを支払わなければ導入出来ない、と考えている方は多いのではないでしょうか。
この LT では、それなりにアプリケーションが大きくなってから PHPStan を導入した際にやった事や辛み、現在の状況などを体験談としてお話しさせて頂きたいと思います。
Webサービスを運営していると、サービスからユーザーにせっかく送ったメールが届かないことがあります。
そのような、何らかの理由で目的のユーザーの元に届かなかったメール=バウンスメールをどう処理するかは、サービスにとって避けては通れない課題なのではないでしょうか。
また、AWS SESを使っている場合、バウンスメールの数が多すぎるとペナルティがあったりするなど、サービスにとってバウンスメール処理は意外に大事なものだったりします。
このLTでは、そもそもバウンスメールとは何なのか、AWS SESをつかってバウンスメールをサービスにフィードバックするまでを発表します
1番最初にOSSにPRを出した時に、皆さんは緊張されませんでしたか?僕はしました笑
PRを出すのはこの方法であっているのだろうか、的外れなPRではないだろうか…などなど。
このセッションでは、OSSにPR出すのにあたってまずは翻訳から参加することで心理的なハードルが下がったり、翻訳も案外勉強になってしまうことを、翻訳のtipsと共にお話しします。
新卒・若手エンジニアのみなさん、長期のタスクに取り組む際、プランニングやタスク分割で失敗したことはありませんか?
長期のタスクを計画的にこなしていくために、適切なプランニング・タスクの分割は欠かせ無いものだと思います。
しかし、新卒1年目の私には
「プランニングって何?」
「タスク分割ってどうやるの?」
とわからないことが多くありました。
はじめのうちは見積もりをしみてたけど、実際の対応工数はそれよりも多くかかってしまったりと難しいこともありましたが、先輩や上長のアドバイスを頂きながら少しずつ改善していきました。
本LTでは、私がPHPプロダクトのバグ改修などの業務内での経験を通じて学んだ、以下のことについてお話します。