なずなログ

ただのSIer系SEが思ったことや色々書く感じのアレです

#PHPerKaigi 2024に参加しました

はじめに

ここ数年のルーチンワークになっているPHPerKaigiに今年も参加しました。

今年は無理やり仕事を納めDay0から参加出来た。
Day0はもう少し人が少ないかなと思っていたけど、思ったよりも多くの人がいて知ってる方もいらっしゃってうれしかった。
今年も多くの方々にお声がけいただいて話させていただいて感謝。

ランチマッチング

Day1は午後参加だったから行けなかったけどDay2はマッチングしてカレーを食べに。
お昼っていつも悩ましいのでこういうマッチングがあるとはじめましての人ともお話できるし、近場にお店もいっぱいあるので会場付近のことも知れて有り難い企画でした。
Day0のToday's Updateで千年の宴をご紹介されていたので突撃してみたらまさかの団体予約が。休日の昼居酒屋って案外需要あるのね…。

聞いたトーク

家族の都合とかで聞けない時間帯があったりしたけど、ニコ生タイムシフト使えるのありがたい。後で見るけどとりあえず生トークの感想を。

Readable 正規表現

正規表現は一度にいろんなことを詰め込みすぎて複雑なGODにやりすいからバリデーションとかで役割を分断したほうがいいんじゃないかという主張に対してQAで「結局コード量が増えているけれどもそれって可読性があがってるの?」という問があって、個人的には「Readable ≠ コード行数が短い」だと思っていたので面白い問だなと感じた。
可読性は「何をやりたいか」という情報を初めてコードを読んだ人に伝えられるか、という認識だったのでコードが多少長くなっても実装者の意思が伝達できることがより重きを置くべきだと思っていたけれども、コードが長くなることで可読性が下がっていると感じる人もいるというのは可読性という言葉の幅が広すぎるからなのかもしれないと感じた。
ノイズを削って意思表明を明確にする、というのはあすみさんのAssertionメソッドを使い分けるという話にも通じるけれども、可読性みたいな幅の広い言葉を使うよりも「1度にいろんなことやるのは止めよう」「何をしているか名前をつけよう」(文字種チェックなのか、形式チェックなのか等)みたいに砕いた方がメンバーには伝わりやすいのかもしれない。

マイクロサービスがほしいと思ったときに本当に必要だったもの〜なぜ人は共通基盤の夢を見るのか〜

マイクロサービスを採用したいとなったときに別のやり方でも良くない?という問いかけで、新しい道具を使いたくなってしまう衝動との戦い方の紹介と捉えた。銀の弾丸のように思ったとしても運用のことや実際の使われ方を考えると最適ではないことは多々あるし、「なぜそうしたいか」を考えたときに組織のスケールのためだったりアプリケーションのスケールのためだったりするけれど、技術を先に決めてしまうとやりたかったこと実現できてなくない?となることもあるので、適切なゴールを設定するのを忘れずバズワードに振り回されないようにしないとですね。
共通DBというのはアンチパターンではあると思ってるけど、規模とか価値観によっては取りうる手段かも。分離させてCDCで伝播させてもストレージコストって馬鹿にならないし。

「"品質"が高いコード」って何?

品質とは一言でいっても、個々人の思う品質って「バグがない」「サクサク動く」「読みやすいコード」だったり色々で、定義に立ち返る人って中々いないんだよな〜って思っていたのでとても頷きながら聞いていた。
ソフトウェアの場合は物理的に見えるものではないという性質上、ハードウェアの製造に関わる品質と比べるとどうしてもふわっとした認識になりやすいし、要求も何となくで進めている現実があるのかなと思う。
それはそれとして善良なる管理者としての責任はあるので、要求がなかったら要求を引き出す必要はあるし、要求が引き出せなくても最低限の品質保証プロセスは回さないといけないよな〜という面倒臭さがあるのよね。
(ただしそのプロセスの質が悪いとたちが悪いんだけれども…)
ふわふわした品質を語ってくる上の方々に100回くらい読ませたい。

B+木入門:PHPで理解するデータベースインデックスの仕組み

DBを作ろう→インデックスを作ろう→ドハマリするという流れでB+Treeの解説。
普段何気なく使っているしなんとなくわかった気でいたけれど、挿入時の動きとか全然知らずに今まで来ていたので、改めて見るとアルゴリズムとデータ構造面白いな〜ってなった。
array_is_list関数のことを初めて知ったのでPHPのarrayが何でも屋さん過ぎるのと歴史的経緯が垣間見えたのとarray_is_listっていう何とも言えないネーミングに若干ツボった。
arrayが便利すぎて捨てられるのも面白かった。
あとB TreeのBは完全にBalanceのBだと思っていたので、明かされていないのは意外だった。
C言語のデータ構造とか懐かしくなったので久々にデータ構造もう一度勉強しようかな。

キャッシュと向き合う、キャッシュと共に生きる

キャッシュは麻薬。ちゃんと覚えた。
キャッシュっていうとどうしてもオンメモリを思い浮かべてしまうけれど、コメント返しで言われていた「マテリアルビューもキャッシュの一種」というので無意識にキャッシュのような働きになっていて落とし穴にハマりやすいのがある気がした。
例えばシステム間のファイルインターフェースや、CDC等など。 どれもデータ鮮度の話は出るけれども障害や不整合が発生したときの観点はあとの方になって出てきて困るケースはありそう。

はじめてのメンバー育成。マネージャーとメンバー視点で振り返る1年間

人を育てるのって中々難しくてプレイングマネージャーとかになってしまいがちだけれども、メンバーが自ら球拾いをするようになるまで自立していてすごいなと思う反面、組織のミッションの理解のために施策を行えるなど推進剤になるような環境を作るのは大変だなと思う。
人のタイプによっては全然そういった推進剤があっても響かないので、カルチャーマッチとか採用の段階から育成まで地続きでできているのかな。

privateメソッドのテストって書かない方がいいんだっけ?

少し遅れて入ったらいきなりトーク終了してて面白かった。
闇魔法を目的があってあえてやるのと、楽だからやるのはぜんぜん違うよね。
(一度闇魔法を味わうとそのままずるずるいっちゃうことはよくあるけれど…)
モック化して距離を置くことで偽陰性が出てくるし、内部構造に着目して距離が近すぎると偽陽性が出てくるし、適度な距離を保とうというのはストーリーも含めてわかりやすかった。
個人的にはprivateメソッドのテストをしたいとなるケースはあるけれども、流用性のあるビジネスロジックに近いところは切り出して公開メソッドにして、それ以外のprivateメソッドでテストを行いたいときは捨てる前提で作るのが良いのかな〜って思っている。
開発中はテスト範囲を分割して早めにバグを検知できたほうがいいので一時的には内部構造に着目してもいいけど、CIで知りたいのは振る舞いが変わったときなので、テストコードのライフサイクルを分けるといい感じにならないかな。捨てる予定だったテストコードがゾンビみたいに残り続けそうな予感もするから悩ましい。

懇親会

Day0, Day1と非公式懇親会を経て公式の懇親会。
なんか年々お料理おしゃれになっていってない?
今年は瓶ビールもあって美味しいお酒と美味しいご飯で最高でした。
その後も遅くまで付き合っていただいた皆様方ありがとうございました。
これでまた一年頑張れます。

最後に

PHPerKaigiのコミュニティは「現在PHPを使用している方、過去にPHPを使用していた方、これからPHPを使いたいと思っている方、そしてPHPが大好きな方たち」と広く受け入れてくれているので気軽に行けるし、過去に言われていた「すべてのみなさんの同窓会でありたい」との思い通りに色んな方々とまた会えてお話できて嬉しかった。
仕事では普段PHPを触らず周りがカンファレンス?なにそれおいしいの?みたいな文化圏なので少々異質なタイプだとは自覚しているけれども、PHPerKaigiは品質の話とか言語関係なく話せる話題も多くて経験に裏打ちされたトークは聴き応えがあるし、SIerのお話も面白がってもらえるのでありがたい。

「最近品質分析するときに最近脳内でメーデーの事故調のナレーションが脳内再生されるんですよね」という話をしたら「それで20分枠話せますよ」って言われてからちょっとネタ考えようかな〜って気持ちになっている。
そろそろLTよりも長い枠にチャレンジしてみようかな。

3日間のお祭りもあっという間に終わったけれども、毎日楽しかったです。
また来年。

#PHPerKaigi 2023に参加した

PHPerKaigi 2023に参加してきた。

本当は前夜祭も参加したかったけれど、仕事の都合がつかなかったのでDay1から。

ひさびさの双方向のコミュニケーションの場に赴いた気持ちとしては、最高だった。

ふとしたことから始まるカンファレンスの廊下での立ち話やアンカンファレンスで始まるLT等、刺激物が多くて良い意味で栄養過多を感じる。正しくオフラインカンファレンスでないと摂取できない栄養素だと思う。

オンラインのメリットは度々享受しているけど、しかしながら自分はつい目移りをする質な故に紹介されたツールがあればすぐに調べてしまい、大変失礼ながら片耳で聞くような形になっていまいやすい。

オフラインの情報量はうまく目の前のスピーカーに注意を引き戻してくれるので、ちゃんとスピーカーの人が語ってくれる知見を食べてる感を味わえるのだと思う。

懇親会での人伝いに輪が広がっていく様子はカンファレンスならではだなーと思う。その輪の中に入れていたら嬉しいし輪を広げることに貢献できたらなお嬉しい。 一方で、引き出しを多くするためにも日々吸収しなければと最近の怠慢を反省した。

PHPを普段触っていなくても歓迎してくれるコミュニティは本当にありがたい。PHPerKaigiのスタッフ、スポンサー、スピーカー、そしてこんな自分とも接してくれる皆様に感謝です。

2021年のふりかえり

今年も気がついたら年の瀬になっていました。

もう四捨五入で三十路になる圏内に入ってしまいましたね。年々時間の流れが早くなってきている…。結婚もしたし、このまま中年まっしぐらでいつ若手と呼ばれなくなるのかと内心ソワソワしてます。

せっかくの年末なので、今年1年をふりかえっていきます。

仕事について

ちょうど年始の時期に今のプロジェクトにアサインされました。

何だかんだはじめてのプロジェクト異動でしたし、AWSを仕事で触るのもはじめてだったので、とても学びが多かったです。

(がんばるぞ!!と意気込んでいた矢先に前プロジェクトで問題が起きて2週間ほど古巣に呼び戻されたんですけどね……)

新しいプロジェクトだと実力勝負感があっていいですよね。

そんな中でも、いくつか特に印象に残ったことをつらつらと書いていきます。

AWS

仕事でAWSを触るのははじめてでしたが、プライベートでEC2とか触っていたので割とスムーズに慣れました。

Dockerはサクッと環境を作るのが好きで個人開発するときはもっぱらコンテナ作っていたのが活きて、FargateやCodeシリーズもある程度使いこなせるようになりました。

今年はECS Execがリリースされたのがうれしいポイントでした。コンテナ内に潜り込めるのは調査や検証に大いに役に立ちましたし、Fargateのメタデータエンドポイントをお試しするのもやりやすくなりました。

自分が担当した案件ではCloudFormationを活用できたのも良かったポイントです。インフラはメインの担当ではないですがCFnで構成案作って引き継いだとき、インフラ構成の意図をコメントに残せたり複数環境構築することの容易さのメリットを実感できました。「インフラは職人技で作った人以外わからない……」となることを防げるので、これからもIaCを推していきたいですね。

性能テスト

性能って難しいですよね。とても広い知識の幅が求められるので。

計算量やEC2のEBS帯域幅Oracleの仕組みやメモリ管理、ガーベジコレクションなどなど調べながら性能評価をしていました。

メモリの線形増加が発生するトラブルもありましたが、JavaのFlightRecorderの確認やコンテナに潜り込んでRSS/PSSの確認、Javaの内部実装の確認やメモリアロケータの変更による検証など、割と各要素の奥深くまで潜れる機会でもあったので、自分の中の知識の点と点を繋ぐいい機会だったかなと今となっては思います。

大半の開発の現場には「アプリ」「インフラ」とかの組織の構造は少なからずあるかと思いますが、コンポーネントチームになっている場合では性能トラブルのように「アプリ」「インフラ」などの構造の積み重ねに対する課題を解決する速度が鈍化してしまいます。(代わりに個々の組織構造の単位の中で生じるトラブルの解決スピードは早かったりはしますが)

そういったときにチームの機能の境界を超えて自分で調べたり、一緒に議論をすることでスムーズに解決できたりするので、お互い共通言語で話せて越境することの有意義さを改めて感じました。本当はクロスファンクショナルチームを目指すのがいいんだろうなあ。

この記事もとても参考になりました。

道の真ん中をきれいにするプロジェクトマネジメント~イケてるチームになるための10原則~ - Qiita

スクラムマスター

気がついたらスクラムマスターをやっていました。

無免許なので、そろそろ資格を取ろうかな……。

はじめてのスクラム経験でしたが、まだチームもクライアントもウォーターフォール開発の慣習から抜けきれておらず、モヤモヤした毎日を過ごしています。

ウォーターフォールであれば包括的なドキュメントを作ってそれに沿って制作していきますが、慣れていないスクラムではクライアントが今までの経験則に従って包括的なドキュメントを要求してくることもあります。本来届けたい価値は動くソフトウェアが提供するものであり、動かないドキュメントは必要最小限に留めたいのですが、なかなか脱却ができません。

開発メンバーも精一杯応じようとオーバーワークでカバーしてしまおうとしたりしてしまいます。

また、WBSガントチャートによって得られる中長期のスケジュールの完全性と同様のものを求めてしまうとせっかくのバックログと優先順位による柔軟なコントロールを放棄してしまうことになりますが、ある程度の計画は必要なので難しい領域だと感じています。

理解が十分ではないとスクラムマスターが従来のリーダーのように「責任者」という扱いにされてしまいがちなところも、意識を変えたいと思いつつなかなか変容に至っていないところです。

開発チームをサポートすることに責任を持って、よりスクラムチームをよくしていきたいですね。

勉強会

gitや性能の考え方など、できる範囲で開発メンバーに興味を持ってもらおうと勉強会を何回か開催することができました。

なかなか勉強会って最初の一歩がハードルが高いんですよね。知ってる知識かもしれないし、興味のない話かもしれない。そもそもみんなの時間をもらってまでやることじゃないかもしれない。そう思って中々最初の一歩が踏み出しづらかったこともあります。

ですが、後輩くんが勉強会やりたい!と言ってくれて動機を作ってくれたので、不定期ではありますがネタ候補の中から投票数が多かったものを勉強会で話したりするようになりました。スクラムの障害にナレッジに関するものがあると感じた場合には、そのナレッジに特化した勉強会にすることもあります。

案外メンバーからの反応もよく、他のプロジェクトでもやらないかと言ってくれたりするので、発表者冥利に尽きますね。

こういう機会を作る雰囲気を作ってくれた後輩くんには感謝です。

家庭について

いろいろとありましたね。いままで忙しさを理由に全然親の顔を見に行っていなかったのですが、気がついたらカオスな状況になっていて毎週後始末のために片道2〜3時間で往復していました。

諸々の処分費用も100万は超えましたね……。貯蓄って大事なんだなぁ()

あと、結婚して半年が過ぎました。いい意味で結婚する前と変わらず、気楽に幸せに過ごせています。

結婚した当日、星野源さんと新垣結衣さんの結婚発表があったのでネタツイっぽくなっちゃいました。

読んでよかった本

カイゼン・ジャーニー

スクラムマスターやらない?」と言われて急ぎアジャイル開発とスクラムを勉強するときに一番最初に読んだ本でした。

一人からはじめる改善と、越境するというのが印象に残っていて、スクラム開発をはじめてやる人にはおすすめしている一冊です。

エンタープライズアジャイル開発実践ガイド

スクラムで開発を進めていく中、いろいろ教科書通りに進められないなと思ったときに手に取った本でしたが、「あれ、これうちの現場見てるの??」というレベルでドンピシャな指摘があったりして、読んでいて楽しくなる一冊でした。少しずつ理想形に近づける、まさにガイドとして活用しています。

Software Design

定期購読はじめました。

最初は2020年12月号のAWS特集がきっかけでしたが、「チーム開発の視点が変わる アジャイル開発の新常識」や、「UNIXテキスト処理の極意」などのシリーズも面白く、毎号読んでチームメンバーに布教してます。

買ってよかったもの

Jabra Elite 85t

前のBluetoothイヤホンがご臨終したので、はじめて完全ワイヤレスイヤホンを試してみました。

連続再生時間が若干足りない気がしましたが、使ってみたらそんな心配はなく普通に使えています。充電ケースすげー

外音取り込みは結構優秀ですね。SONYくんとどちらにしようか悩みましたが、物理ボタンのほうが誤操作しなさそうだと思ってJabraくんにしました。そのうちSONYくんも試してみたい。

Oculus Quest 2

なんとなく128GBモデルを買ったはいいものの、あまり活用できてないです。

でもたまに映画を見ると大画面でごろ寝しながら見れるので没入感が良いですね。

あとホーム画面が落ち着くのでぼーっとしたりもします。

さいごに

今年もいろんな方にお世話になりました。
来年もよろしくおねがいします。

資格勉強サボってたのでやらなきゃ

2020年の振り返り

2020年の振り返り

仕事

5月くらいまではずっと去年からやっていた大きめの案件の業務リーダーをやっていて、無事終わってクライアントからも評価された。
長期間の案件を責任をもって通してやるというのは今まで経験がなかったので、システムのインフラや方式などの知識も身につけるいい機会だったと思う。
(今振り返ると、いわゆる若手向けのチャレンジ枠扱いだったのかなと思ったり)
その案件で実現した内容については社内で論文を書いたりもしたけれども、細かく書きすぎるとバレるので割愛。

それが終わってからは運用保守リーダーを任され、課題対処やトラブル対応(たまに提案や見積など)をこなす毎日だった。
所謂24365対応のシステムなので、夜間・休日に電話が来ることも幾度かあり、最初は気が休まらなかったけれども次第になれると「ああ、またか」みたいになるので慣れは怖いなと思う。
担当プロジェクトは運用保守チームへアプリケーション・インフラ問わずに問い合わせが来るので、直前の案件でインフラ知識が少しついていたのは奏功だった。
12月になってからは異動の話が上がり、引継ぎネタを整えたり教育したりと忙しかった。
引継ぎは自分の中のあるべきリーダー像を整理するきっかけにもなったので、いつかLTのネタにでもするかな。

前から改善系のタスクを勝手に作ってコツコツ活動してて、1年である程度進められた。 - リモートワークに向けた整備(VC導入やルールの整備だったり) - テストコードの布教に向けてライブラリの開発 - 改善チームを作ってテストコード導入のPoC - Redmineを導入してExcelタスク管理脱却に向けて準備

特にテストコードのところはチームメンバーにも楽しいと思ってもらえてるようだし、取り組んでよかったな。
レガシーなプロジェクトを少しでも良くしていきたい。(プロジェクト異動するけど要請もあり見続ける予定)

勉強

忙しさを言い訳に全然できなかった。たまに本を読むくらいで、資格勉強とかは全然できなかったな。
カフェに行って勉強するスタイルだったけど、外出自粛等で全く行かなくなり、つられて勉強の時間も減った。
勉強がてら過去に自分が作ったものをリファクタリングしたりしてるけど、ファット過ぎて全然終わってない。誰だこのコード書いたやつ。
まずは勉強する方法を勉強したり、習慣化する工夫だったりしたほうがいいと思い始めた(n回目)。
あとブログも何だかんだ書かなくなってたな。

来年に向けて

  • AWS認定アソシエイトレベル合格したい。
  • 情報処理安全確保支援士の勉強再開しておきたい。

#PHPerKaigi 2020参加レポ day2

PHPerKaigi2020 day2(本編2日目)に参戦してきました。

phperkaigi?

PHPerによるPHPerのためのお祭りです。
PHPerKaigi 2020

聞いたトーク

  • 自作して理解するxUnit
    • PHPUnitにお世話になってるけどPHPUnitが何をしているか目を向ける機会があまりない
    • Scripted Test、所謂テストコードをテスト自動化のための必要なメカニズムを提供しているのがxUnit
    • Test Suiteの初期化は3つの戦略が分かれている。
      • Test Enumeration:手動で列挙
      • Test Discovery:自動的に見つける
      • Test Selection:属性を元に見つける
    • 実際に実装してみるとxUnitのメカニズムがわかる
    • setupとかのライフサイクルを使う上での工夫は、可読性を上げるために4つのステップで分離するようにしている
  • マスターデータの管理運用と実装について
    • マスタデータはデータベース管理+管理画面で実装することが多い
    • 都道府県名表示するだけでわざわざDBにつなぐのはめんどくさいしHTTP通信するのもめんどい
    • 簡単に変更できて、管理画面を作る必要がなくて、エンジニア以外でも更新できるのがあるんですよ、Excelっていうんですけどね
    • ExcelはJOINができるんですよ…VLOOKUPっていうんですけどね
    • 異常なデータの混入はテストで弾く。データのためのテストも有効なアプローチ
    • 12万件のレコードを吐き出したマスタファイルはメモリを使うけどOPcacheがあるから2回目はメモリの使用量は減る
    • モデリング上のベストプラクティス」≠「運用上のベストプラクティス」
    • 良いモデルを作っても「わかりづらい」と言われることがある
    • 運用シーンを考えながらツールの選定や要否を考える
  • PHPerがこれから「型」とお付き合いしていくために
    • 型システムは元は数学とかで用いられてきた型理論という分野
    • 型推論はプログラムのふるまいを推論するためのツール、効率よく計算するなどの目的
    • 型システムでエラー検知や安全性を高めたり効率を高めることができる
    • データ構造の不整合を許容しないので、コンパイラから見てきれいなコードを維持しないといけない
    • 「安全」の定義がまちまち(方安全やメモリ安全などいろいろある)
    • 柔軟性とはトレードオフになりがち
    • 静的と動的に優劣はない、その場その場の有利不利はあるが双方に越えられない壁はある
    • PHPのタイプヒンティングで性能劣化するのは過去の話、PHP7以降ではむしろ性能があがる
    • PHPが型を手に入れると後方互換性との兼ね合いが心配になる
    • まずはPHPDocなどで型を書いていこう
  • クリーンな実装を目指して
    • コンポーネントレベルで大事なこと
      • 処理の流れ
      • 依存関係
      • 集約
    • ユースケースごとにやりたいことは一緒でも実装が異なっていたり、ユースケースによって集約ルートが変わっていたので見直した
    • 処理の流れ、依存関係、集約が管理されていれば改修時のストレスや手戻りが軽減される

PHPerチャレンジ

PHPerたちの戦い PHPerチャレンジ
終戦績は 64,250ptで6位でした。
最終日は大分取りこぼしやコードゴルフで苦戦して、ランキングダウンしました。
正直凄い疲れた。でも楽しかった

アンカンファレンス ゲリラLT

ういろうさんとおかしょいさんの作ってくれた流れにのって、オフショア開発の話をしたりしてました。
オフショア開発ってなかなかイメージが付きにくい話でしたが、最後に落ちをとれたので満足です。
そのうち真面目に資料作って話してもいい気がする。

全体を通しての感想

PHPerKaigiに参加したのは2回目ですが、オープニングの「すべてのみなさんの同窓会でありたい」というのがとても響きました。
去年全然右も左もわからない状況で参加して初めてお話しした方も多かった中、1年後またお会いして「お久しぶりです」と言ってお話を出来る機会というのは中々貴重だなと思っています。
またぜひ来年もまた参加したいですね。

また、今回は初めてLTに挑戦しました。以降お声がけいただけたり、お話しすることができてとてもうれしかったです。
今後も機会とネタがあればアウトプットしていきたいと思います。ネタ作りしないとですね。

今回の早期チケット購入特典だった、トレーディングカードはいろんな人と話すきっかけにもなりますし、記念品にもなって良いアイデアだなと思いました。

f:id:akaa07:20200211231450j:plain

長谷川さんのアイデア、まつぴーさんのデザイン、どちらも素晴らしかったです!
ありがとうございました!

スタッフ、スポンサー、スピーカー、参加者の皆様、楽しい時間をありがとうございました! 来年もまたお会いしましょう!!

#PHPerKaigi 2020参加レポ day1

PHPerKaigi2020 day1(本編1日目)に参戦してきました。

phperkaigi?

PHPerによるPHPerのためのお祭りです。
PHPerKaigi 2020

聞いたトーク

  • E2Eテストに向き合う
    • 自動化されたE2Eテストはテスティングピラミッドの頂点ではない
    • E2Eテストはなんで失敗したのかわかりにくいから失敗すると原因を突き止めるに時間がかかる
    • E2Eはコストが高いので最小限に抑えた方が良い
    • パフォーマンスの観点を忘れずに
    • ブラウザ自動化ソリューション Puppeteer
      • 便利
      • 軽い
      • ブラウザ側に判定ロジックを持っているので壊れづらい
  • PHPとEventSauceで始めるイベントソーシングアプリケーション
    • イベントとイベントリスナ=〇〇したときxxするという要件を実現するためのパターン
    • イベントを利用すると直接の依存が排除できるので、処理を追加・変更しやすくなったり非同期にできるが、複雑さとトレードオフ
    • 状態は履歴の積分、履歴は状態の微分のようなもの。すべての履歴を残しておけば再計算して最新の状態を得ることができる
    • null許容やミュータブルなカラムを減らすとイベントのようになることが多い
  • エキサイトの大改造を大解剖!
    • エンジニアが働きやすくなるように制度を改革した
    • 給与テーブルを変更して「ここまでしか上がらないのか」と思わせないようにしてモチベーションが下がらないようにした
    • 週3で働ける正社員「サンシャイン制度」などを検討中
    • 働きやすい環境を整えてから採用にアクセルを踏むようにしたいと考えている
  • AWS Lambda にCustom RuntimeでPHPを導入したシステムに改修を加えてUT導入まで行った話
    • 紹介するプロダクトがペンディングになった
    • アーキテクチャへの理解が不足した状態だったため中途半端な実装になった
    • 最上位層で処理が行われ可読性が低下していた
    • 様々な提案をしてみたものの「予算がないから」と却下された
    • モンキーテストみたいなものしかなくテストのコストが高い
    • DockerでLambdaもどきを作ってPHPUnitを使える環境を作った
    • DockerでLambdaもどきを作ってPHPUnitを使えるように
  • カンファレンス初心者が全国行脚を始め、登壇するまで
    • カンファレンス行ってみたら楽しかった
    • スタッフやるのも楽しい
    • 遠征するのも楽しい
    • 懇親会ぼっちはあるあるだから気にしない
  • Laravelから始めるテスト駆動開発
    • 機能追加でテストケースが増加
    • バグで霊圧が消えた
    • かけないところはE2Eテストでカバー
    • 小さく始めていく
  • 「明日からフロントもよろしく!」 と言われたとき備える Atom Design でのフロントエンド設計
    • Atomic Designでコンポーネントの責務を分ける
    • UIはパーツの集合体
    • 開発保守がやりやすい
    • テストが書きやすい
    • 分離の基準を決めるのは原著にはあまり書かれていないので自分自身で

PHPerチャレンジ

PHPerたちの戦い PHPerチャレンジ
本日の戦績は42,050pt, 現在2位。
トップのちゃちいさんと差が中々埋められない….。成瀬さんの攻略法を参考にがんばります

ルーキーズLT登壇しました。

めちゃくちゃ緊張しました。
[PHPerKaigi2020]Laravelで家電を操作してみよう

何人かにお声かけていただいて、おもしろかったと言っていただけてうれしいです。
そのうちobnizネタでQiitaかブログでも書こうかな…。

明日もがんばりましょう!

PHPerKaigi 2020参加レポ day0

PHPerKaigi2020 day0(前夜祭)に参戦してきました。

phperkaigi?

PHPerによるPHPerのためのお祭りです。
PHPerKaigi 2020

聞いたトーク

  • Deep Module in PHP
    • モジュールの複雑さ≒プログラムの複雑さ
    • Deep Moduleはインターフェイスのコストが小さいが機能のベネフィットが大きい
    • Shallow Moduleはインターフェースのコストが大きいが機能のベネフィットが小さい(隠蔽しきれていないなど)
    • なんでもかんでもメソッド化するのもメソッド化するコストと比較したとき良くないことがある
  • マルチパラダイムモデリング 〜異なるモデリングパラダイムから見るモデリングの勘所〜
    • 焼肉はエンターテイメント
    • オブジェクトはモジュールがルーツ
    • ERモデルはリレーショナルモデルやより詳細なデータモデルを作るためのも
    • オブジェクト指向だけ、手続き型だけ、などのように考えるのではなく、状況によって適切なパラダイムを選択するのが良い
  • Inside SWOOLE:非同期処理はどのようにして動くのか
    • swooleはタスクの切り替えにアセンブリを使ってる
    • 一見魔法のように見えても一つ一つ辿っていけば理解できる

PHPerチャレンジ

今年もあります、PHPerたちの戦い PHPerチャレンジ
本日の戦績は2900pt, まだまだ取り損ねているポイントが多いので、明日頑張りたいです。

ルーキーズLT登壇します

今年は、ルーキーズLTにチャレンジします!!
ネタはPHPer界隈じゃあまり聞かないIoT系なので、ぜひ聞きに来てください!