この記事は「ひとりでカンファレンスふりかえりo0h Advent Calendar 2021」のday-Xです。

ひとりでカンファレンスふりかえりo0h Advent Calendar 2021 - Adventar

今日振り返るのは、「静的解析をチームに導入したい人を応援します」です。 PHP Conference Japan 2021のCfPに応募しました。Regular session (25 mins)の枠になります。

静的解析をチームに導入したい人を応援します

概要

PHPの静的解析については、特にカンファレンスなどに出回る話題としては「よく見るもの」になってきたと思います。PHPStanやPsalmにPhanだったり、コーディング規約に則ってスタイルをチェックするものなど、「どういうものなのか」は簡単に豊富な情報にアクセスできるようになりました。 なので、「静的解析って何?」についてはある種ありふれた話になりました。

「自分は静的解析に魅力を感じている」という人がその次に迎えるのが、「どうやって導入しようか」という戦略を立てて状況を進展させていくぞ!というステップです。 本プロポーザルにおいては、まさにそういった部分を共有するものにしたいと思いました。

1人でやってみるというのは、静的解析の概念やツールを知っている人にとっては難しくないものだと思います。 しかし、それをみんなで活用していくとなると、「現場のコストを下げて”便利さ”だけ享受できる」「静的解析があることで何が、どう便利なのか?を理解し共感してもらう」のが大事になりまう。これが「1人で」と「チームで」の差分だと思うのです。

そうした「導入・定着までの壁」についてが主題のプロポーザルです。 「静的解析を説く」のではなく「導入したい人を応援します」としているのは、そういったニュアンスなのです。

具体的には、以下のようなコンテンツを想定しています

  1. CI上で静的解析をどう動かすか
  2. 導入時に、既存コードに対してどのように適用していくか。その後にどういう風に深化させていくか
  3. チームにいる「静的解析を知らない、未経験者」に対して「何が嬉しいのか」をどう説明すればいいか

種々の静的解析の特徴だったり機能紹介については「他の人がもうやってるはずだし!!」というスタイル。 そこよりも「どう巻き込むか」に焦点を当てた内容です。

動機

会社で「新しいPJをやるぞー」ってなって「新しく集まってチームでやるぞ〜!」となった際に、自分としては「せっかくだから今風なPHP環境を作りましょ」と考えていました。 当然ながら「静的解析も入れるぞ」と。

自分としては何ら疑う余地なく「静的解析はあるべきだ、入れないという選択肢はないぞ」と思っていました。 しかし、よくよくメンバーの話を聞いていると小さな違和感を覚えることになります。 なんでだろう・・?と考えてみると「そういえば、静的解析ってなんだろう?どう嬉しいの?」というのを説明がされていないからなのでは、ということに気付きました。

自分自身、今では当たり前にお世話になっている静的解析も、初めて聞いた時は「それはどういうものなんだろう?」「実際に何が嬉しいんだ?」を知ろうとするところからスタートでした。 その中で、「lintできるといいね・・!」「型、あると安心なるほど!」を咀嚼できたはずです。

こうした「入れたい動機」「導入によって期待する価値」についての説明がなかったな、と。