みなさん、PHPを初めて学んだ時に感じた「?」を覚えていますか?
私の所属する開発チームでは、PHPマニュアルの精読を始めました。
精読してみて改めて感じたPHP独自の魅力について、皆さんに共有したいと思います。
このセッションでは、PHPの特殊な機能、他のプログラミング言語との比較、その機能ができた背景について、私なりに調べた結果や考察を発表します。
対象者:
メールを送る処理の実装時うっかり誰かに送ってしまうことはないでしょうか?
開発時のメールの誤送信事故を防止するために、ダミーのメールサーバに送るようにするということが多いかと思います。
Mailcatcher や Mailhog、Mailpit などの便利なツールが公開されていますが何か使われていますか?
弊プロダクトでは、ツールは利用せずにログにメールの送信内容を出力しています。
このアプローチでの Laravel を利用した開発時のメリットとデメリット、ログの可読性を上げるための工夫など私たちが行っていることを紹介します。
多くのWEBアプリケーションで導入されているであろう ECS(Fargate) 環境では DB マイグレーションってどうやってますか?
弊プロダクトでは マイグレーション用のコンテナを用意する 方法を採用しています。
コンテナ環境での DB マイグレーションの実行方法はあまり情報がないように思われるので参考になれば嬉しいです。
Target class [...] does not exist.
このようなエラーを見たことはないでしょうか?そして、よくわからないけど、ファイル名を直したらうまく動くようになった!という経験はないでしょうか?
実はこの裏ではautoloadという仕組みが働いています。
autoloadがどういう仕組みで動いているのかを知ることで、ファイルが読み込まれない時やクラスが見つからない時の原因が早くみつけられるかもしれません。
このトークではPHP初心者向けにautoloadの仕組みを少し掘り下げてお話しします。
トークの内容
・autoloadは何を解決するか
・autoloadのルール
・autoloadを実現する仕組み
ゆるふわ言語としてお馴染みのPHPを利用中の皆さん!
我々には、エラー制御演算子@
というものがあります。
──コイツの挙動について、深く考えてみた事はありますか?
例えば、次のコードを実行すると、何個のエラーが出力されるでしょうか。
<?php
var_dump(@$v1->p);
@var_dump($v2->p);
var_dump($v3->p);
@min($v4);
min(@$v5);
min($v6);
$ar1[] = $v7;
@$ar2[] = $v8;
$ar3[] = @$v9;
正解はPHP8で3個、PHP7で6個です!
@を付けた場合の制御の対象はどこまでなのか、制御された場合にどういう挙動の変化があるのか?
PHP8での変更はどんなものなのか?
このトークでは、php-srcとASTの世界から「@完全に理解した」を目指します。
Mutation Testing とは、プロダクションコードに対するテストコードがどれだけ十分なものか、というテストの品質自体を評価するテスト手法です。
Mutation Testing を導入することで何がよいかというと、見かけ上のコードカバレッジが高く、作成したソースコード全般的にテストコードが網羅できていたとしても、テストコードが正しく書けているとは限らないのですが、その部分を簡単に検出できるということです。
今回は「Mutation Testingとは?」という詳しいお話から始め、実際にInfection PHPを利用してMutation Testing をライブデモしながらお話をすることで、より品質の高いテストコードの作成に寄与できればと考えています。
Mutation Testing とは、プロダクションコードに対するテストコードがどれだけ十分なものか、というテストの品質自体を評価するテスト手法です。
Mutation Testing を導入することで何がよいかというと、見かけ上のコードカバレッジが高く、作成したソースコード全般的にテストコードが網羅できていたとしても、テストコードが正しく書けているとは限らないのですが、その部分を簡単に検出できるということです。
今回は「Mutation Testingとは?」という詳しいお話から始め、実際にInfection PHPを利用してMutation Testing をライブデモしながらお話をすることで、より品質の高いテストコードの作成に寄与できればと考えています。
PHPやWebフレームワークのバージョンアップ、できていますか?
ながらくバージョンアップできていないものを一足飛びにバージョンアップしようとしたときに、今まで頑張ってUnitTest書いてきたからそれを頼りにがんばるぞ!と思っていたら、味方だと思っていたPHPUnitにいきなり背後から撃たれるという経験をすることになるかもしれません。
PHPやWebフレームワークのバージョンアップ履歴を確認し、それにどう対処すべきかということを事前にしらべていても、PHPUnit の変更を見ていなかったために、今まで頑張って書いてきたUnitTestで大量にエラーが出るという悲しい結果にならないように、PHPUnit の最近のバージョンアップの内容とその対処方法を紹介します。
意識が高くない。エンジニアだけど自分のサービス・プロダクトを持っていない。作りたいものがない。
だけど技術は好き。
まだ出会ったことのないキミ(技術)と出会うための熱量を大事にしたい。
PHPの新しいバージョンをナウでヤングな環境で試したい。
このプロポーザルのディスクリプションを読んでいるアナタは業務が忙しいにも関わらず、技術への飽くなき探求があるはずだ。
そんな、意識が高い訳では無いが、技術をキャッチアップしたい人に話したいことがある。
誰かの書いたコードが世に出る過程で、コードレビューを行う組織は多いのではないでしょうか。
コードの質を担保するため。属人化を防ぐため。知識共有や認識合わせのため。チーム内のスキルアップのため。
コードレビューは様々な意味や目的を持って行われます。
先日発表したPHP Conference2023「CodeReviewerが求められること」の続編です。
https://fortee.jp/phpcon-2023/proposal/25891e6c-7762-47b5-8cb3-e3db7f056abc
前回のおさらいや、PHPコード上でのコミュニケーション例の紹介、
そしてどんなコーディングやPullRequestの出し方がCodeReviewerに求められるものとなっているのかに迫ります。
少しでもお役に立てると幸いです。
対象者: コードレビューに携わる全エンジニア(役職問わず)
令和では受託開発はオワコンで内製化の時代?駆け出しエンジニアに人気なのは受託開発より自社サービス開発?
世間では「自社サービスのエンジニアになりたい!」という声が大きく聞こえるようになりました。
私は受託開発フリーランスから自社サービス開発の社員エンジニアになり、エンジニア人生の中で自社サービス開発に携わっている期間の方が長くなりました。
キラキラした仕事のイメージで語られがちな自社サービス開発ですが、日々どんな仕事をしているかは意外と知られていないようです。
私が自社サービス開発のエンジニアとしてどんな仕事をしてきたか・見てきたか、そして自社サービス開発ならではのつらみ・苦しみ・楽しみについて話します。
令和では受託開発はオワコンで内製化の時代?駆け出しエンジニアに人気なのは受託開発より自社サービス開発?
世間では「自社サービスのエンジニアになりたい!」という声が大きく聞こえるようになりました。
私は受託開発フリーランスから自社サービス開発の社員エンジニアになり、エンジニア人生の中で自社サービス開発に携わっている期間の方が長くなりました。
キラキラした仕事のイメージで語られがちな自社サービス開発ですが、日々どんな仕事をしているかは意外と知られていないようです。
自社サービス開発のエンジニアとしてどんな仕事をしてきたか、見てきたかについて話します。
キャッシュはパフォーマンスを劇的に改善する効果がある反面、一度使うと簡単にはやめられない複雑性と中毒性があります。
その特性から「キャッシュは麻薬」と言われ、安易な利用は忌避されています。
しかし、キャッシュがもたらすパフォーマンスの改善効果は無視することはできず、コンピュータの世界において有効活用されているのも事実です。
そこで今回は実際にキャッシュを使う時に陥りやすい問題を取り上げながら、実際の活用例を説明します。
今の時代、ソフトウェア無しでは事業の成長はありえません。
しかし、実際にソフトウェアを作るとなると様々なことを決める必要があります。
あのときの決断が技術的負債の根本原因になってしまった…そんな経験が自分もあります。
そこで今回は現場で技術選定を行ったり、ソフトウェアを作る時に必要な考え方やテクニックをご紹介します。
生涯エンジニアを続けたい。
しかしインターネットを見渡せば凄腕のエンジニアばかり。
このまま、自分は生き残れるのだろうか...
そんな不安はありませんか?
職場では日々の仕事に追われ、それでも新しい技術を理解し、向き合って行かねばなりません。
もちろん一日は有限ですから勉強する時間も限られます。
そんな中、私がどうやって新しい技術を理解し、未来の技術を予測し、今の技術を身につけ、そして ユーザに価値を提供 しているか。そのために日々をどう過ごしているか。
そんな エンジニアとして生き残るための哲学 と 問題解決するために必要な習慣 を皆さんにお伝えします。
ピカソは言った。「優れた芸術家は模倣し、偉大な芸術家は盗む。」
先人の言葉を例に上げながら、課題を解決するエンジニアになるために誰もが見つける大切なことをお話します。
目の前に立ちはだかる削除フラグ......
削除フラグがアンチパターンであることは知っていても、目の前の削除フラグと付き合っていくしか無い...
そう思って諦めていませんか?
削除フラグを既存のアプリケーションに影響をできるだけ閉じて無くすことはできます。
テーブルから状態や属性を別のテーブルに移し、アプリケーションを壊すことなくリファクタリングしていくために必要なことを説明します。
レガシィコードと向き合い、リファクタリングして、目の前のプロダクトを改善している現場のテクニック、余すこと無くお話します!
何度も遭遇する 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 を題材としてオレオレ電卓を作りながら解説します。
採択されたら大阪でもやってみようかと思ってます...!
ビーチ駆動開発(Beach-Driven Development)
とは?
プログラム開発手法の一種で、プログラムに必要な各機能について、最初にビーチに行き、動作する必要最低限な実装をとりあえず行なった後、海に入る。という短い工程を繰り返すスタイルである。
※明確な参考文献がなかった為、上記と定義する。
実際、海辺でビーチ駆動開発をしてどうだったか?開発は捗るのか?支障はないのか?注意点などをお話させて頂きます。
私は何か新しいことを学ぶたびに、それをLT(ライトニングトーク)イベントで発表することが好きです。このセッションでは、コミュニティーに対する興味と学習のきっかけについて話します。
私は、学生の頃にはコロナ禍や技術力不足などの理由で、コミュニティーのLT会に参加できなかった経験があります。しかし、社会人になってからはその夢を実現させる機会があり、それが私にとって非常に特別な時間でした。ここで、私にとってコミュニティーで発表することや参加したい、関わりたいと思うことが、学びのきっかけであり挑戦のきっかけであると感じました。
勉強するきっかけやモチベーションが湧かなくて悩んでいる方に、私なりの学習に対するモチベーションの維持について共有したいと思います。