Regular Session (25mins)
Team & Communication Troubleshooting Monitoring

Observability Engineeringって何でしょう?: アプリケーション畑の人と語りたい可観測性

o0h_ きんじょうひでき

「オブザーバビリティ」や「可観測性」という言葉は、耳にしたことがある人は増えてきていると思います。
あるいは、「全く知らない、想像もつかないよ」「また新しい "ナンチャラlity" が出たんですか?」なんて人も多そうです。

PHPを趣味や仕事で使っている人は、Webサービスやモバイル等のバックエンドを提供しているケースが中心でしょうか。
「今もどこかの姿が見えない誰かが使っているかも知れない」「その人たちが、自分たちが提供しているサーバーにアクセスしている!!」
というのが、Webサービスの難しさであると同時に単純・嬉しいところでもありますよね。
すなわち、「何が起きているか」は「自分たちの目の届く所に集約されている」と。

オブザーバビリティとは、「いかに状態( = 上手くいっていること・問題が起きていること)が把握可能になっているか」という性質です。
放っておいても実現されるものではありません。
意識して、設計して、運用して・・・初めて手にすることができるものです。

これは単なる「ツール」「技術」の話ではないのです。
チームないし文化まで含めて、「どう向き合っていくか」を突き詰めた先にオブザーバビリティがあると考えています。

本セッションでは、「継続的に、かつ自信を持ってサービスを提供し続ける」ために大事なことを、
書籍「Observability Engineering」の内容をベースにしながら紹介していきます。
「SRE」「インフラ」「運用」 ではない 人達に向けた 、どうしてアプリケーション開発者が向き合っていくべきなのだろう・・?という話です。

6
Regular Session (25mins)
Team & Communication

「問いかけ」を考えて場をデザインするファシリテーション

o0h_ きんじょうひでき

ソフトウェア開発、色々な場面で人とのコラボレーションを求められがちですよね?
例えば、アジャイル系のフレームワークやプラクティスを採用している・していないに関わらず、ふりかえり(retrospective)を行っているチームは増えてきていると思います。
それ以外にも、チームビルディングの場面だったり、プロダクト開発のためのブレインストーミング、もしくはポストモーテムにおいても参加者それぞれの視点が出揃うことが求められます。

理想的なのは、そこにいる全員が同一の目的を持って主体的な意思表示と議論に参加できている状態です。
そのために、場をファシリテーションする人には「発散」と「収束」を効果的に行うことが求められます。
しかしながら、単純に意見を求めるだけでは達成が困難な事も多いです。その壁を破るためには工夫や知見が必要になります。

どのようにしたら、参加者に思考を促し、高いレベルでのコラボレーションが実現されるでしょうか。
思考を促進するための接し方として、「問いかけ」や「発問」と呼ばれるものがあります。
ファシリテーターが、これらの概念や観点・技法を自らの引き出しに入れておくことで、今までとは少し違った議論が生まれるかも知れません。

本セッションでは、テクニックと態度の両面から「どのように場を回す工夫をするか」を共有します。

話すこと

  • 参加者の主体性を引き出すための会議の基本設計
  • 「問いかけ」とは何か
  • 創発的な場作りのためのいくつかの工夫、引き出し

主な参考書籍(一部)

4
Regular Session (25mins)
Test & Debug

「テスト チョットワカル」を目指すためのxUnit Test Patterns入門

o0h_ きんじょうひでき

概要

  • xUnit Test Patternsって、どんな本なの?どんな事が分かるの?を紹介します

想定する対象者・レベル

  • ユニットテストを書いているけど自信がない/しっかり勉強したことがないかも・・という人
  • その本の名前は聞いたことがあるけど、実物は見たことがない・読んだことがないぜ・・という人
  • 「良いテスト」あるいは「テストを書く時に考えるべきこと」を言語化したい、理論を身につける術を探している・・という人

イントロ

現代的な開発において「テスト」は欠かせません。
そして、「ソフトウェアテスト」あるいはその中の「自動化テスト」といっても、それぞれに様々な手法や戦略、ねらいと目的、それらを実現するためのツールなどがあります。

その中でも、普段の開発において、我々のような開発者・プログラマーにとって最もなじみ深いのは「ユニットテスト」ではないでしょうか。
この分野における古典的ともいえる名著の一つに、「xUnit Test Patterns(xUTP)」があります。名前だけは聞いたことがある・・という人も沢山いるかと思います。
一体どんな本なのでしょう?内容が気になるものの・・・気軽に手を出すには、分量的にも価格的にも重い一冊と言えます。

読んだ方が良いぞ!!!と思っていても、未読のままの人も多いのではないでしょうか。
重い本を読むための勢いが欲しいですよね。
まずは、「どんな事が書かれているのか」「(頑張って読むことで)どんな知識を得られそうなのか」という期待値設定のための案内があれば嬉しい・・・と思いませんか?
本セッションは、そんなガイドとなるべく、「xUTPの入り口まで近づいて見てみる」をテーマに話をします。
xUTPが、テストに強くなりたいあなたの味方になるかも知れません!!

本セッションで得られること・ゴール

  • 「有名だけど読んだことがないメッチャ重そうなあの本」について、内容を把握できる
  • それによって、今の自分に必要か?が想像できるようになる

本セッションで話すこと

  • xUnit Test Patternsとはどんな本なのか
  • 各パート・各章にはどんなことが書かれているのか
  • 書名にもなっている「パターン」は、どんなものが書かれているのか
    • サンプル的にいくつかのパターンの紹介
  • どんな時に読むと良いか。どんな使い方をすると良さそうか
6
Regular Session (25mins)
Team & Communication

どこかの「いちプログラマ」としての学習の仕方、取り組み方

o0h_ きんじょうひでき

プログラミングを始めてから、一定のペースで「プログラミング歴」が伸びています。
最初の1年、暫く経った5年、それすらも超えて10年・・・と時間は流れていきますが、それでも変わらないのは「学び続ける課題がある」という事です。
環境の変化も伴いながら、それでも学び続けるのです。
例えば「後輩や部下に対して指導するようになった」とか「マネジメントの仕事が増えて、業務でコードを書く時間や必要性が減った」など。

学習方法や身につけるべきスキル・知識などは千差万別で、一般化して語ることは難しいですが、「いちヒントとして、どのような姿勢で学びを得ていく事が出来そうか」を本セッションで共有します。

参考にしそうな書籍など(仮)

5
Regular Session (25mins)
Composer

Composerを(PHP以外で)再発明する

o0h_ きんじょうひでき

現代のPHPには、既にComposerは欠かせないものになりましたね!
これ1つで、様々な機能やソリューションをもたらしてくれるツールです。

そんな便利なComposer、もっと仲良くなりたいことでしょう。
読んで、把握して、自ら作ってみるのはいかがでしょうか。
PHP自体の機能を利用しないと行けない機能(例えばPHP自体の実行を伴うCommandのフックなど)は難しくても、
「composer.lockを読み込んで(なぜなら純粋なJSONだから!)」「vendorディレクトリにソースを展開する(それってファイルのDLと展開ですよね!)」といった処理くらいならできそうに思いませんか。

やってみましょう!

やること

  • composer install の実行する単機能ツールをGoで作成し、その解説
    • composer.lock が事前に生成されている事を前提

本セッションで得られるかも知れないこと

  • 一歩引いて考えた「Composerの仕事は何で、どういう仕組みか」という理解
  • 「非PHP実行環境で、ワンバイナリでcomposer installが実行可能になったら何か便利なことある?」という考察
6
Regular Session (25mins)
Test & Debug Quality

PHP_CodeSnifferって何?どう動くの?読んでみました!

o0h_ きんじょうひでき

PHP_CodeSniffer(phpcs)は、「コードの書き方に規則を持たせようよ!!」を支援してくれるツールです。
予め定義したルールセットに従って、開発時のローカル環境やCI環境上で「ルールに沿っていないコード」を検出し、指摘してくれます。
また、同梱のphpcbfコマンドを利用することで、簡単な整形を機械的に行うことも可能です。

そんなphpcs、利用中の方も多いと思います。
では、中身はどうなっているのでしょう。どうやってPHPで実現しているのか・・気になりませんか?
「なぜphpcs/phpcbfは動くのか」を実際のコードから紐解いて見ます。

話すこと

  • phpcsの基本的なライフサイクルや概念
  • phpcsの中身(コード、実装)
    • 例えば「Sniff」とは何であり、どのように読み込まれて利用されるのか
  • phpcbfの基本的なライフサイクルや概念、処理の流れ

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

  • phpcsを”理解”することによって、独自のsniffやrulesetを扱いやすくなるかも知れません
2
Regular Session (25mins)
Team & Communication

「アジャイルになっていく」を果たすためのリーダーシップとは

o0h_ きんじょうひでき

イントロ

リーダー未経験の私は、現職で働き始めてからの2年間で、初めてProject Leader→Tech Lead→Engineering Managerと任命されることになりました。
「影響力を発揮してね!」とか「リーダーシップを持ってね!」などと言われます。
・・が、一体どうしたら「それらをよく発揮してくれたね!!」と認められるようになるのでしょうか。
自分で道を切り拓いてこそリーダーだ!!という考え方も分かりますが…

マネジメント系のキャリアを目指す人、あるいは運命的にそれに任命された人、今の環境に何らかの物足りなさを感じる人、etc.。
私以外にも、色々なところに「じゃあリーダーシップって何?」に関心を持ったりモヤモヤしている人はいるかと思います。

概要

このセッションでは、
アジャイル(主にScrumやXP)ついて勉強したり、メンバーとの1on1で聞いた声や反響、認定アジャイルリーダーシップ研修Ⅰ(CAL-1)で学んだことを踏まえながら
「(プロダクトの開発組織における)リーダーシップってなんだろう、何を求められているんだろう?」についての自分なりの考えを共有していきます。
「リーダーシップについて駆け出した/駆け出そうとしている人」に向けてのヒントになればと思います。
それらのテーマに向き合うことで、日常の仕事の中においての「自分が何を目指すか」「チームの進化にどう繋ぎ込むか」を探っていきましょう。

想定する聞き手

  • Engineering ManagerやLead/Leaderとして駆け出した人
  • そうしたポジションをこれから目指したいと考えている人
  • 職場で「リーダーシップ」を求められるけど、それが言語化されていなくてモヤモヤする人

参考にする書籍の例(一部)

3