コロナ禍をきっかけとして、テレワークを導入した企業は珍しくないでしょう。
もともとソフトウェアエンジニアにとってテレワークは相性が良い部分もあったことから、様々な利点をもたらしてくれました。
その一方で、良いことずくめに思えたテレワークも、新たな問題をもたらしたこともまた事実でした。
従業員どうしの関係性や勉強会等の活発さといった文化をひとつの強みとしていたエンジニア組織は、テレワーク導入直後にはその強みがほとんど見えなくなっていました。
もともと組織には「開発組織活性チーム」というチームが存在しており、テレワーク導入による問題が無視できなくなってきた頃、「失われつつある組織文化を取り戻し、維持すること」を新たなミッションに掲げて活動内容を変化させました。
本トークではそこからおよそ 2 年にわたる「開発組織活性チーム」の取り組み内容と、それによって実現できたこと、できなかったことおよびそれらの考察をお話します。
家を買うべきか、買わないべきか。
買うとしたらマンションか、戸建てか。
勤続年数が浅かったりフリーランスだと住宅ローンの審査が通りにくいという話は本当か。
家の購入って分からないことが多すぎて無限に悩みますよね。
本トークでは、家を購入するに当たって自分自身が調べたことや不動産屋に相談したことからの学びをご紹介します。
(PHPerKaigi 2023でパンフレットに寄稿させてもらった https://fortee.jp/phperkaigi-2023/proposal/caec413f-384d-415e-8020-59053058a1f6 のトーク版です)
今ではオープンソースソフトウェア(OSS)を使うことは当たり前になっています。このことに異論を挟む人はいないでしょう。
ところで、「OSSへのコントリビュートをするのは敷居が高い」「OSSを作るのはなかなか難しい」とよく聞きます。
確かにそれもOSSの1つの側面かもしれません。
そこで提案です。趣味としてOSSを書くのはどうでしょう?
実はOSSは趣味で書くのもアリなのです。
皆さんの中にも「プログラムが好き」「プロダクトが好き」「モノづくりが好き」という方は少なくないはずです。
そんなあなたは趣味OSSの素質ありです。
筆者は「少し実用的で小さなOSSを書くのが趣味」と公言しています。
あくまで「いち趣味の紹介」としてOSS開発のはじめかたをお伝えできればと思います。
そして、オフライン発表だからこそできる、私の積みOSS(ネタ帳)を全てお見せします!
これは発表資料には含めない予定なのでその場限りの公開になるかもしれませんよ。
みなさんはこういった経験が無いでしょうか。
「PHPStanのレベル5まで対応完了!よしっ!」
「つづいて、レベル6っと、ッターン!」
Method xxx() return type has no value type specified in iterable type array.
「ふぁっ!?」
、、、はい。あると思います。
そんなときはArray shapesなりで、ひーひー言いながら対応すると思いますが、泣きながらこう思った人も少なからずいるのではないでしょうか?
「PHPStanはLevel6で何を見ているのだろう」と。
今回のトークでは、そういった疑問をソースコードリーディングを交えながら、みなさんと一緒に解き明かそうと思います。
PHPStanが見ている世界を知ることができれば、PHPStan(ひいては静的解析ツール)ともっと仲良くなれるはず!
webサービスを開発する上で、脆弱性への配慮は非常に重要です。
皆様も一般的な脆弱性については意識をされているかと思います。しかし、マイナーな脆弱性についてはどうでしょうか?
本セッションでは Laravelにおいて実装された5c問題の脆弱性を持つデモ用のweb applicationを攻撃し、脆弱性の説明を行います。
対象
内容
文字コードの知識を活かしたsql injectionの防止を通じて、セキュリティへの関心を高めましょう。
webサービスを開発する上で、脆弱性への配慮は非常に重要です。
皆様も一般的な脆弱性については意識をされているかと思います。しかし、マイナーな脆弱性についてはどうでしょうか?
本セッションでは laravelにおいて実装された5c問題の脆弱性を持つデモ用のweb applicationを攻撃し、脆弱性の説明を行います。
対象
内容
文字コードの知識を活かしたsql injectionの防止を通じて、セキュリティへの関心を高めましょう。
この発表では、Laravelを使ったWebアプリケーション開発において、誤った実装やセキュリティに関する不注意によって生じる脆弱性(XSS、CSRFなど)について説明します。また、それらを回避するための対策方法について説明します。
主な対象
話すこと
echoとprintって何が違うの?
for と foreach , whileの違いと使い所って?
早いコードと遅いコードってどのくらい差があるの?
php8.2に存在するビルトイン関数をopcodeを見て感覚ではなく理論で理解しよう!
話すこと
PHP8.2のビルトイン関数の紹介
類似した関数のopecodeの比較
早いコードと遅いコードの比較と関数の得意な処理の説明
今年に PHPerKaigi 2023 というイベントで、「時間を気にせず普通にカンニングもしつつ ISUCON12 本選問題を PHP でやってみる」というトークをしました。
https://fortee.jp/phperkaigi-2023/proposal/7e212cb2-be37-43e8-b6ee-5236d259fcbf
時間無制限バトルによって、結果的には ISUCON12 の優勝チームが Go で出した本選スコアを PHP で越えることができました。しかし、このときのチャレンジではまだ幾つか試せていない取り組みもあります。
例えば他言語で行われるような、オブジェクトのプールを事前生成して使いまわすような最適化には PHP でも意味があるのでしょうか?
実行時型検査のコストをバイパスするような最適化は可能なのでしょうか?
immutable_cache のような別のキャッシュソリューションに目に見える効果はあるのでしょうか?
Workerman や他の非同期 PHP フレームワークのような、さらに異なる PHP 実行環境との性能比較はどのような結果になるのでしょうか?
思いつくままにいくつかの挑戦を追加でやってみます。
対象とする聴講者は以下です。
OpenTelemetryはObservabilityを獲得するための標準化されたSDK・API・ツールの提供を目的とした、CNCFのオープンソースプロジェクトです。
CPU使用率のようなシステムメトリクスから、アプリケーションのカスタムログまで、様々な情報を言語やプラットフォームに依存しない統一的な規格で管理できます。
モニタリングツールもJaegerやPrometheusといった主要なOSSとの連携がサポートされているだけでなく、DatadogやNew Relicのようなベンダーサービスにも出力を取り込めるようになっています。
10種以上の言語への対応が進んでいる中、ついに昨年12月、PHPのSDKがv1.0.0になりました!
4月現在まだbetaですが来たるGAに備えて、便利に使いこなすために、OpenTelemetryがどういうものか、何に使えそうかを今一度みていきます。
開発環境を柔軟に構築でき、それを簡単に共有できるDockerですが、都度適切な環境を構築することが新米エンジニアの私にはとても高いハードルでした。
しかし、ある出来事によりそのハードルがここ最近ガクッと下がりました。AI技術の急速な進化です。
このLTではAIツールを活用して0からDockerでLaravel環境を構築できた実体験をお話しすることで、
Docker × Laravel環境の作り方をわかりやすくご紹介すると同時に、プログラミングにおけるAIツール活用のコツも少しご提供できればと思います。
コードを書いていて自分で命名をする機会って多いですよね。
良い命名をすることで、コードの可読性が向上し、保守性も高まります。一方、悪い命名はコードの理解を困難にし、ソフトウェア品質を低下させる原因となります。
実体験、書籍、ウェブ記事や他のカンファレンスで学んだことを総合的にみて、どんな命名をすべきかを具体的なコードを示しながら発表します。
本発表の目的は、良い命名の条件と具体的な命名方法を理解し、実践につなげることです。
内容
PHPで文字コードを扱うには、mbstringを使うのが主流であると思います。
そんなmbstringですが、PHP 8.1からMajor Overhaul of mbstringという大規模改修が入ったため、その内容を把握するための記事を書きました。
運良く、執筆者であるAlexさんに読まれたことで、ぼくはPHP 8.3となるバージョンの面倒を見るという立ち回りをしています。
文字コードはそれぞれ生まれも管理の方法も違うため、色々と混乱することもあるでしょう。
特にShift_JISのたくさんの亜種などはたくさんありすぎて何がなんだかわかりませんよね。
そういったものを紹介していければいいなと思っています。
また、PHP 8.3では、どうやらUTF-8を使うのがよさそうというのがわかってきました。
一方で、Shift_JISやISO-2022-JPなどを使うというのも選択肢としてあるようです。
それにはUTF-8特有の弱点も存在していて、Shift_JISが好まれる理由でもあるようです。
文字コード、それぞれ先人の歴史の積み重ねによるものが多いです。
一度、棚卸しを兼ねて文字コードを見てみませんか。
カンファレンスは一日にして成らず...。参加者からすれば数日間の"お祭り"も、開催に至るまでは会場選定、企画、予算策定、スポンサーとの交渉...のように、とにかくたくさんの準備が必要です。
このトークでは、日頃あまり表に出てこない「カンファレンスがどのようにつくられるのか」についての話題を、(PHPカンファレンス福岡なのに、何故か)YAPC::Kyoto 2023というPerlコミュニティにおけるカンファレンスを例にしてご紹介します。
特にYAPC::Kyoto 2023は、「コロナ禍の前に企画され、コロナ禍でも一度も中止を決定することなく、延期を重ねて改めて開催された」という特徴(?)のあるカンファレンスです。コロナ禍におけるカンファレンスの準備やその対策、いわゆる「ウィズコロナ」時代のカンファレンスについての工夫や考察などについてもお話します。
カンファレンスにスタッフとして関わることに興味を持っているが、一方で具体的なイメージが持てなくてあと一歩を踏み出せない、という方もいらっしゃると思います。そういった方々が、このトークを通して「スタッフになると、こんなことをやるのか!」というイメージを持ち、PHPカンファレンスなどを含む身近な/興味のあるカンファレンスのスタッフに名乗り出る一助になればいいな、と思っています。
海外展開を視野に入れたWebサービスを開発する場合、多言語対応は避けて通ることはできません。
要件次第ではありますが複数の言語を扱いたい場合、対象localeの判定やDBでの異なる言語データの持ち方等考慮すべき事項は多々あると思います。
このトークでは実際にLaravelを用いたWebサービス開発時の多言語対応について、
対応したことや後から振り返ってこうすればよかった等実際の開発で得た知見等をお話ししたいと思います。
OpenAPI仕様書を書いて、そのまま使わないというのは勿体ないです。
swagger-phpでOpenAPIの仕様書を書いてそれをそのままアプリケーションに組み込んでしまおう!という内容です。
実際にswagger-phpで仕様書を書いて、それをどの様にValidationやルーティングとして利用するのか?について具体的なコードと実装例を上げて解説したいと思います。
私は、現在の会社で約1年間、料金チームに所属していました。このチームでは、締め日や売上日など、ビジネスにとって重要な日付の扱いが欠かせません。しかし、日付計算には様々な落とし穴があり、月末処理が適切に行われなければ企業に請求できないなど、クリティカルなバグを引き起こす可能性もあります。
日付計算は、時にうるう年や月末日の考慮が必要であり、さらにタイムゾーンの扱いも慎重に行わなければなりません。そのため、日付計算で様々なバグが発生することがあります。
このセッションでは、実際に発生した日付計算のバグについて取り上げ、実際のコードを交えながらその原因や修正方法について話します。
具体的には、以下のバグを取り上げます。
これらのバグは、特定の日付でのみ発生するため、十分な手動テストが困難です。そのため、Unitテストによる日付計算のテストについても取り上げます。
また、PHPの日付計算でよく使われる、date(), DateTime(), DateTimeImmutable()の違いについても軽く取り上げます。
ユーザーのパスワード保存などでLaravelのHashingを使われたことがあると思いますが、もしHashingの安全性について尋ねられた時、皆さんはどう答えますか?もしかしたら公式ドキュメントで安全だと言われているから、みんな使っているから安全であると答えられるかもしれません。(以前までの自分はそうでした。)一般的な業務を行う際にこんなことを考える必要はありませんが、このLTではHashingでハッシュ化を行うことが果たして安全であると言えるのか、またなぜ安全であると言えるのかについて発表します。
ハッシュ化に対する脅威
ハッシュ化に対してどのような脅威が待ち構えているのかを紹介
ハッシュ化の脅威に対する対策方法
前項で紹介した脅威に対する対策方法を脅威ごとに紹介
LaravelのHashingの実装について
前項で紹介した対策方法をHashingでどのように実装しているのかについて実際のコードを見ながら紹介
ここ数年でQAエンジニアという名前を聞く機会が増えてきたかもしれません。
QAエンジニアは、会社によって持つ役割が大きく異なります。
また、テストエンジニアとQAエンジニアは何が違うのでしょうか?
テストエンジニアは、主にテストの実施に特化しています。
一方、QAエンジニアはプロジェクトやプロダクトなどの品質向上に貢献します。
私は10年間テスター(テストエンジニア)をして、その後、転職によりQAエンジニアとなりました。
私のテストエンジニア・QAエンジニアとしての経験から、このセッションでは、QAエンジニアの仕事内容について詳しく説明します。
■概要
2018年のPHPカンファレンス福岡でしたテストライブをします!
今回のテスト対象は別のものを用意するよていです!
2018年の様子はこちらからご覧ください
https://underscore42rina.hatenablog.com/entry/2018/06/17/004141
2018年のPHPカンファレンス福岡でテストライブを行います。今回のテスト対象は、別のものを用意する予定です。
■詳細:
私は、PHPカンファレンス福岡でテストライブを行う予定です。今回のテスト対象は、現在検討中ですが、最新の技術を使用したプロダクトを用意する予定です。
このテストライブでは、参加者は探索的テストを目にすることができ、その方法や手順について学ぶことができます。
探索的テストとは、テスト計画やテストケースを事前に作成せず、テスターが自由に操作しながら、問題点や改善点を発見するテストのスタイルのことです。このテストは、想定外の問題点や改善点を発見することができるため、プロダクトの品質向上に貢献します。
さらに、探索的テストは経験ベースのテストと言われ、その手法は本などで技術を得られづらいため、参加者はこの機会に知識やスキルを見ることができます。
みなさまのご参加をお待ちしております。