ポスターセッション

不確実性に挑む実践知:アウトドアスポーツとアジャイル開発に見るリスクマネジメントの共通点

概要

ソフトウェア開発は不確実性が高いとされていますが、アウトドアにおける商業ツアーも「大自然」という巨大でコントロール不能な不確実性を相手にゲストに安全に楽しんでもらうための実践知を多数持っています。

このポスターセッションでは、「元ラフティングガイド」という異色の経歴を持つ私が、アウトドアの商業ツアーで日々実践していたリスクマネジメントの手法の具体例と
アジャイルソフトウェア開発で使用される手法の共通点について探求し、そこから見えてきたリスクマネジメントについての見解を発表します。

当日は、会場で参加者の皆さまの経験や現在直面しているリスク、そしてその対処法についてぜひ皆さまの貴重な経験を共有いただければ幸いです。

ポスターの内容

  • ソフトウェア開発における不確実性
    • 内的要因:開発チームと技術課題
    • 外的要因:ステークホルダーと外部環境
  • アウトドア業界における不確実性
    • 内的要因:ガイドチームと技術課題
    • 外的要因:ゲストと自然環境
  • 両者に共通するリスクマネジメントの考え方
    • リスク評価方法と4つの対応方針
    • 各対応の具体例
  • まとめ
    • 不確実性と向き合っていく中で大切なこと
レギュラートーク(20分)

最速で成長する技術

皆さん、昨年度はどのように成長しましたか?
そして、今年度はどのような成長を計画していますか?

このトークでは、以下の方を対象に

  • キャリアに悩んでいるジュニア層の方
  • 「伸び悩んでいる」と感じている中堅の方

私自身が学習の速さにおいて一定の成果を上げてきた経験をもとに、次のような内容をお届けします。

  • 短期的に素早くキャッチアップするために実践してきた具体的な方法
  • 中期的に無駄なく成果を上げるために意識している戦術
  • 長期的に自身の価値を高め続けるために考えている戦略

このトークを通じて、皆さんが自身の成長を加速させるためのヒントを得られることを願っています。

レギュラートーク(20分)

実践で学ぶPHPのインターフェース活用法

PHPのInterface、使っていますか?

このトークでは

  • PHPはある程度読み書きできるが、オブジェクト指向や設計パターンに不安がある
  • 「抽象に依存する」という考えがいまいち理解できていない
  • Interfaceの使い方がいまいち腑に落ちていない

といった方を対象にサンプルコードをによる実践的な使い方を通して、
その根底にある原理原則を解説し、言語機能としてのInterfaceへの理解を深めると共に

  • Interfaceがどのような場面で有用なのか?
  • 良いインターフェースとはどんなものか?
  • なぜInterfaceのような抽象的なものが必要になるのか?

を解説します

Interface、コワクナイヨ!

LT(5分)

クイズ・PHPUnit 〜11にあって、1にないものど〜れだ〜

o0h_ きんじょうひでき

PHPUnitは、いわゆる「xUnitファミリー」といわれるソフトウェア群のいち実装であり、
2024年時点で最新版は11と、とても老舗のプロジェクトと言えます。

時代に適応して変わっている部分はあれど、根底にある思想は共有されているはずです。
昔から変わらない?変わった?じゃあ、クイズの時間ですね!!!

このLTを聞いて、明日からPHPUnit 1 (もしくはPHPUnit 11)にちょっとだけ詳しくなりましょう。

学べること

  • 明日から、職場でPHPUnit 1を用いたテストコードを書く際にも、少し自信を持って取り組めるようになります

得られるかもしれないこと

  • 長く続くソフトウェアプロジェクトの実例から、「本質的で変わっていないこと」「変化に晒され、淘汰されたもの」について思いを馳せる機会になるかもしれません

発表すること

  • まず簡単に、PHPUnit1を実行している様子をお見せします
  • 機能や設定を紹介して、「1にある」「11にある」「両方にある」の3択クイズをします
  • 特にアサーションメソッドの有無について、多く出題されます
  • 同一のメソッドに置いて「どちらの挙動か」を問われるものもあります
採択
パンフ記事(8ページ)

ライフサイクルから理解するPHPUnit

o0h_ きんじょうひでき

例えば、何かのテストケースを1つ実装します。 vendor/bin/phpunit で、テストを実行します。
その後に起こることは何でしょうか?
「CLIの入力を解釈して」「設定ファイルを読み込んで」「実行可能なテストケースを列挙して」「実行対象のテストケースを選別して」「実行順序等のオプションがあればそれも考慮し」・・・

「普段は何気なく使っているPHPUnitも、良く考えたら色々なことをしていそうだ」なんて気持ちになりませんか?

PHPUnitを支える仕組みに、イベントシステム(Observerパターン)があります。
例えば https://github.com/sebastianbergmann/phpunit/tree/11.4.0/src/Event/Events を見てください、こんなに色々なイベントが定義されています!
これにより、複雑に要素が絡み合った「テスト実行」の全体の中で、要所要所の拡張性が高く保たれている訳です。

見方を変えると、PHPUnitの管理するイベントに着目することで、テスト実行のライフサイクルの骨子を掴めます。
つまり「イベントを知る」=「FWの思想に触れる」ための手掛かりになるのです。
また、エクステンションと呼ばれる機構を用いて、任意のイベントを利用した機能拡張も可能です。

知っているとPHPUnitとちょっとだけ仲良く慣れるかもしれない、どこかで役に立つかもしれない、
そんな仕組みに触れてみませんか?

記事の内容

  1. PHPUnitの持つイベントシステムの仕組み(実装観点での概要)
  2. 用意されているイベントの紹介
  3. 「Extension」入門・実例の紹介
1
採択
レギュラートーク(20分)

PHPStan七転八倒

tadsan うさみけんた

みなさんPHPStanを使っていますか? PHPStanはオープンソースで開発されているので誰でもソースコードを読んで仕組みを学ぶことができ、理に適った提案であれば取り入れてもらうこともできます。

ところが静的解析ツールはPHPや標準関数の仕様通りに実装すれば完成すればるというわけでなく、さまざまな考慮事項や現実との折り合い付けかたなどがあります。

本トークでは私がこれまでPHPStanに送信したPull Request(※トークプロポーザル時点で未マージ含め49件)について分類して紹介します。

  • 取り入れられた提案
  • マージされたPR
  • マージされなかった
  • マージされたが後にrevertされた提案
  • 投げ出してしまって完成していないPR
2
レギュラートーク(40分)

「雑に作る」に学んで始める、自己満がらくた作り -それはとても楽しい-

o0h_ きんじょうひでき

発表者は電子工作をする訳ではないのですが、書籍『雑に作る』が大好きです!
「下手っぴでもいいから、自分なりに動くものを作るのは楽しいよ」と、ものづくりの初期衝動を思い出させてくれる一冊でした。

部品選びから始めてゼロから作るのが難しくても、 「100均の商品を分解して、中身を見てみよう!」「改造できそうなオモチャのパーツを取り出して使ってみよう!」と
簡単に取り掛かれそうなアドバイスが、とてもたくさん書かれています!

部品も既製品も、安全にさえ気をつければどう使っても良し。分解して特定の機能だけを動かしたり、組み立て直すのも楽しい。
色々なモノが動いている仕組みを、そうやって自分の目と手で理解していくことは大きな学びをもたらすでしょう。
本書ではコレを「テクノロジーを自分のものにする」と表現しています。

同じことをソフトウェアでもやってみたら、絶対に楽しいし力がつきそうですよね!
本トークでは、身近なツールを「分解」して、へっぽこガラクタを作って遊んでみた体験を共有します。

こんな人におすすめ

  • 普段使っているツールに「詳しくなる」きっかけを探している
  • 設計力や実装力などの地力を向上したい・勉強法を探している
  • 何かおもしろソフトウェアを作ってみたいが、発明のアイディアがない!!

こんな話をします

  • 分解してみる、ガラクタを作ってみるの楽しさ・学習効果
  • 「やってみた」話
    • 最初はどこから読めばいいの?どう進めるの?の紹介
    • PHP製のいくつかのツールを例に、どんな「分解」「再構築」を進めていったか
  • この学習方法<遊び>で、身につく力
    • コードリーディングの力
    • エッセンスを理解する、抽象的に捉える力
2
LT(5分)

PHPマニュアルの翻訳でOSS Contributeできるんだぜっ

asumikam asumikam

PHPマニュアルって、マジで、マジでめちゃくちゃ読みやすくないですか?
駆け出しだったときにありがたかったし、なんなら今でも本当に感謝するレベルだし。あの丁寧さのおかげで今の私があります。
そんなわたしですが、2024年、はじめてPHPマニュアルの翻訳作業に貢献することができました・・・!

このトークでは、PHPマニュアル翻訳のOSSコントリビューション物語を通じて、「きっかけの掴み方」や「得られたこと」についてお話しします。

  • その機能を知るきっかけになり、自分のためになる
  • 「このページの一部を作った」という嬉しさ
  • さまざまな貢献の仕方があることを実感する

使うものから、みんなで育てていくものへ。
このトークがあなたの素敵な一歩の後押しになることを目指します!

1
採択
レギュラートーク(20分)

プロダクトコードとOSSに学ぶ例外処理の選択肢 — キャッチするのか、投げっぱなしにするのか

asumikam asumikam

私たちは、プロダクトコードの中でさまざまなコードをtry-catchで囲み、ばしばしエラーを処理しています。
そしてエラー処理にはさまざまな選択肢があることを知ります。
例外を投げっぱなしにする(そもそもキャッチしない)、例外をキャッチして処理する、あるいは例外をキャッチしてうまく戻り値を定義する、など...です。

これまでプロダクトコードのみでの経験だった私は、OSSのコードを見て、「こんなアプローチもあるんだ」と新たな視点を得ることが多くありました。
特に例外処理に関しては、さまざまな場面での使い方や選択肢を知り、自分の考え方が広がりました。
このトークでは、プロダクトコードを書いていく中で実践的に得た知見と、OSSを通じて新たに学んだ例外処理の手法や考え方を深掘りします。

話すこと

  • プロダクトコードにみる"例外処理"の扱い方
  • OSSにみる"例外処理"の扱い方
  • キャッチしたい場面・したくない場面
  • 投げっぱなしにしたい場面・したくない場面
  • 最適な選択肢をどう選ぶか
採択
パンフ記事(4ページ)

Phpactorから学ぶLanguage Server Protocolの仕組み

takeokunn たけてぃ

本文

Language Server Protocol (LSP)は、2016年にMicrosoftが発表したJSON-RPCベースのプロトコルです。
LSPはモダンなテキストエディタなら必ずある機能(例: 定義ジャンプ)を提供していますが、一番の魅力は特定のテキストエディタに依存しない形での実装になっていることです。
これにより各テキストエディタでの実装の必要がなくなり、エディタ選択の自由度が飛躍的に高まりました。

PHPの言語サーバ実装はintelephenceとPhpactorがメジャーです。
本登壇ではPhpactorの実装に触れつつ活用テクニックを紹介していきます。

パンフレット記事に記載すること

  • LSPの台頭とLSP前後のテキストエディタの変化
  • プロトコル解説とLSPがサポートしている機能の紹介
  • PhpactorとPHPStan拡張などの便利な機能の紹介
1
LT(5分)

「エンジニア↔︎営業→ユーザー」間で価値を最短で届けるためにやったこと

_mkmk884 まきまき

仕様確認の遅れや認識のズレで開発が滞ってしまった経験はありませんか?

私は「エンジニア↔︎営業」と「営業→ユーザー」の2つのフェーズで課題に直面しました。
「エンジニア↔︎営業」間では、話し合いが後回しになっていたため、仕様確認の遅れや認識のズレが原因で開発が滞りました。
「営業→ユーザー」間では、エンジニアが思い描くユーザーへのアプローチ方法が営業でうまく使ってもらえず、ユーザーへ価値がうまく届いていませんでした。また、営業にリリースした機能の価値が十分に伝わっていなかったこともありました。

そこで、以下の取り組みを行いました。
・ 何を決めたい時間かがひと目でわかる会議名をつける
・ リファインメントやランチで関係を深める
・ リリース後のアプローチ方法を営業と一緒に決める

このトークでは、エンジニアと営業が協力し、リリース後の価値を最大化するための取り組みと、その結果生まれた変化を紹介します!

レギュラートーク(40分)

Windows版PHPのビルド手順とPHP 8.4における変更点

matsuo_atsushi 松尾篤

WindowsでPHPをビルドする場合、PHP 8.0からPHP 8.3まではVisual Studio 2019を使ってビルドしていましたが、PHP 8.4ではVisual Studio 2022の使用が推奨されるようになっています。このトークでは、Windows環境におけるPHPのビルド手順や最新情報に興味がある方を対象に、ビルドに必要な準備や実際の手順についてデモを交えて解説します。Windows版のPHPをビルドするにあたって知っておきたい情報やPHP 8.4における変更点もあわせて紹介する予定です。

2
レギュラートーク(20分)

設計で解決するモックとスタブの使い分け

app1e_s meihei

テストコードを書く中で、「モックとスタブの使い分けが分からない」「どちらを使うべきか迷う」と感じたことはありませんか?その原因は、テストコードの書き方そのものではなく、オブジェクト設計の曖昧さに起因している場合があります。

本トークでは、モックやスタブを「どう使うか」を直接学ぶのではなく、オブジェクト設計のアプローチを通じて、結果として自然に正しい使い分けができる状態を目指します。

具体的には、次のステップを通じてオブジェクト設計を進め、テストコードを構築する方法を解説します:

  1. 依存するオブジェクトを明確にする
  2. コマンドメソッドとクエリメソッドを明確に分離する
  3. システム境界を超えるときにモックやスタブを使用する

これらのステップを経ることで、モックとスタブの選択が「意図した設計の結果」として整理され、テストコードを書く際に迷う必要がなくなる状態になるでしょう。

レギュラートーク(20分)

ライブラリバージョンアップを毎週行う技術

pinkumohikan ぴんくもひかん

「ライブラリが古いせいでやりたいことが出来ない」なんて経験はありませんか?

古いライブラリは技術的負債であり、セキュリティリスクにもつながります。
本トークでは定期的なライブラリバージョンアップを続けている実体験をもとに、継続的バージョンアップのメリットや始め方についてお話します。

想定観客

  • ライブラリのバージョンが古いせいで苦しんでいるかた
  • セキュリティやパフォーマンスに敏感なかた

お話しすること

  • なぜライブラリをバージョンアップするべきか
  • バージョンアップ時に見るべきポイント
  • 安全に上げるために整えている仕組み
  • 継続的バージョンアップのはじめ方と文化作り
4
レギュラートーク(20分)

「うわっ…うちのテスト、遅すぎ…?」 PHPUnit高速化テクニック

pinkumohikan ぴんくもひかん

「テストがないコードはレガシーコードだ!」
Webアプリケーション開発においてテストコードが書かれることは一般的になってきました。

ですが、テストにかかる時間は適切でしょうか? テストにかかる時間は開発スピードに大きな影響を及ぼします。
本トークでは自動テストを高速化するための考え方やテクニックについてお話します。

想定観客

  • テストにかかる時間を短縮したい方

お話しすること

  • Google提唱の「Test Sizes」を取り入れて、テスト対象をCIとローカルで変えるテスト戦略
  • テスト実行の並列化 (Makefile, xargs, paratest)
  • CIをジョブ分割して体感速度を上げる
  • OPcache有効化とXDebug無効化による高速化
2
レギュラートーク(20分)

Eloquent Modelでハマりがちなトラップと改善策

pinkumohikan ぴんくもひかん

Laravelの魅力の一つであるORM「Eloquent Model」。
雰囲気でも動くものが書けてしまう反面、実は正しく動かなかったり、パフォーマンスの悪いコードを書いてしまう恐れがあります。

本トークではEloquent Modelを使うときにハマりがちなトラップを取り上げて、それらが「良くない理由」と「どうすれば良くなるか」をご紹介します。

想定観客

  • 雰囲気でLaravelを書いている方
  • 不具合が起きにくいコードを書きたい方
  • パフォーマンスの良いコードを書きたい方

お話しすること

  • そのメソッド、返り値nullableにつき
  • 全件取得による富豪的プログラミングにご注意
  • データベース泣かせのN+1問題
  • 良くある間違いを仕組みで防ぐ (Laravel IDE Helper x PHPStan)
3
レギュラートーク(20分)

新卒から4年間、20年もののWebサービスと向き合って学んだソフトウェア考古学

_guri3 小栗 大輝

古いコードベースを読み解く作業はしばしば「ソフトウェア考古学」と呼ばれ、多くの人にとって大変で辛い作業と思われがちです。
しかし、サービスの歴史を辿ることで当時の設計思想や変化の過程を知ることができ、それ自体が良い設計を体験し、学べる貴重な機会でもあります。
私の実体験としても20年もの歴史のあるWebサービスの考古学からは学べることがたくさんありました。

本トークでは、新卒5年目エンジニアである私が、20年以上稼働し続けるWebサービスの改善に向き合う中で試行錯誤したことをお話しします。

お話すること

  • 古いコードベースを読み解き改善を行った事例とその課題
    • Webメディアの広告運用のための管理画面改修
    • 歴史の塊のバッチ処理をPerlからPHPに移行する
  • 全体を知るための「鳥の目」と細部を観察するための「虫の目」の考え方
    • 鳥の目で意図や構造を理解する作図ツールなどを使ったコードの読み方
    • 虫の目で詳細を把握するためのデバッグ方法
    • 「どこまで深掘りするか?」の判断基準
  • ソフトウェア考古学の経験から学んだこと
    • 理解しやすいコードを書くコツ
      • 自分が書いたコード、その後どうなった?上手く行ったこと、行かなかったこと
    • ソフトウェアの健全な変化を助けるドキュメントとは?

話さないこと

  • トークの中で出てくるツール自体の詳細な使い方
  • リファクタリングやデータ移行といったソフトウェア改善に伴う手順の詳細

聴いてほしい人

  • コードベースが古い環境で悩んでいる人
  • 歴史のあるコードを改善したいと思っている人
  • プロダクションコードに初めて触れ、規模の大きさや複雑さに圧倒された経験のある新卒の人たち
2
LT(5分)

東京都オープンデータハッカソンでファイナリストになった経験談

noppo_0548 ミスターのっぽ

東京都が主催するオープンデータハッカソンは、プログラミングスキルがなくても誰でも参加できるイベントです。このLTでは、私がこのハッカソンに参加し、運良くファイナリストに選ばれた経験を共有します。

このハッカソンの特徴は、技術的なスキルよりもアイデアや実現性を競う点です。そのため、技術的な話題が中心となることが多いカンファレンスの中で、少しリラックスできるセッションになるかもしれません。

作品についての詳細は、以下のリンクでご覧いただけます:
東京都オープンデータハッカソン作品
https://odhackathon.metro.tokyo.lg.jp/collection/106/

採択
ルーキーズLT(5分)

社内コードゴルフ大会を開催したら最高に楽しかった!!

keita__Max ニヘー

今年の3月に実施されたPHPerkaigi2024でコードゴルフ大会に参加し、とても楽しかったため、「自分の会社でも実施したい!」と思い立ち、実際に開催しました。結果は大成功で、とても楽しい時間を過ごせたので、その時の話をします。

コードゴルフの内容は、「FizzBuzz」問題や、1時間で解ける程度のの難易度のものを採用しました。言語はPHPを使用しました。

具体的には以下のような内容を話す予定です。

•コードゴルフ大会を実施するにあたって、コードゴルフができるWEBアプリをどのように作成したか
•コードゴルフ大会の雰囲気や参加者からの評判
•参加者たちの感想
•コードゴルフ大会を定期的に開催していることでの社内への影響
•コードゴルフ大会を開催した私自身の感想

1
採択
パンフ記事(8ページ)

2024年PHP系カンファレンス総まとめ!各地域の魅力を語ります

asumikam asumikam

2024年、PHP界隈では日本各地で個性あふれるカンファレンスが開催されました。
それぞれの地域が持つ特色や、カンファレンスごとに感じられる独特の雰囲気、そしてコミュニティの良さがぎゅっと詰まった一年でした。
そこでこの記事では、各地域のカンファレンスが見せてくれた魅力をasumikam視点で語ります。

みて楽しい、いって楽しい、そしてやっぱり学び深い。
「次あれば行ってみたい!」「足をのばしてみようかな?」と思えるようなワクワク感をお届けします!

そして迎える2025年(もう迎えてる)、PHPカンファレンスはさらに進化を遂げ、新たな伝説が始まるかもしれません…。
伝説を一緒につくるのは、あなただ!

2