レギュラートーク (30分+Q&A5分)

手軽に使える「抽象」の道具

o0h_ きんじょうひでき

抽象化能力を身につけるのに役立つ、いくつかの切り口を手に入れよう というトークです。
設計に不慣れな人も、手軽に「抽象化に思いを馳せる」ようになることを目指します。


「優れた設計には、優れた抽象化が欠かせない!」
そんな声を聞いたことはありませんか?
プログラミングにおける抽象化は、
PHPコミュニティでも、これまでに何度も探求され、発信されてきたテーマです(末尾に一例を挙げます)。

「うまい抽象化を身に着けたい・・」そのためには、理解と鍛錬が求められるものと考えます。
体術のように反復や試行錯誤が欠かせませんが、当てずっぽうにやる訳にも行きませんよね。
◯◯アーキテクチャやパターンランゲージと呼ばれるものはどうでしょう?
それらも強力なヒントになりますが、どうしても「実装寄りの話」に閉ざしたものになってしまいます。

より一般的な = クラス設計より手前の「抽象化」も重要です。
このトークでは、頭の中の道具箱にしまっておけるような、
「こういう観点で思考実験をしてみると、抽象化が捗るかもよ」という複数の切り口を提供します。

話すこと

  • そもそも「抽象化」ってなんだっけ、それがあると何が良いの?のおさらい
  • 「抽象を見つける」ために役立つ観点、試せること

抽象化についての発信があった例

1
レギュラートーク (30分+Q&A5分)

ASTって面白いね!あなたがコンパイラじゃなくても、役に立つよ

o0h_ きんじょうひでき

このトークは

  • AST(抽象構文木)はコンパイラにとって便利なものだが、それ以外にも便利に使える
  • ASTって何だろう?を知って、その便利な活用例も知ろう

モチベーション

phperの皆さんは、アルファベットや数字に記号などなどをファイル上に並べていきますよね。
私達が直接的に生産するのは、ただの「文字の羅列」に過ぎません。
これを文法の枠組みに則って解釈することで、文や句と行った構造が手に入るのです。
例えば class Hoge{} と書かれていれば、「1つのクラスが定義されていて、そのクラスはHogeという名を持つ」といった具合です。

ASTの主な利用者はコンパイラでしょう。
人間が読み書きしやすい文字の羅列を、機械のための表現に変換する過程で現れます。

そして、「字句レベルではない、構造化されたレベルでコードを扱える」ことが、
コンパイラ以外にも色々な可能性をもたらします。
より抽象的な理解や操作が容易になり、色々な作業やコード品質の担保をお手軽なものにしてくれるのです。

そんなASTについて、「確かに面白いね!」と感じる人を増やしたいトークです

話すこと

対象(難易度)

  • 「ASTって何だろう?」と感じる人や「聞いたことはあるけど、具体的には知らないな」という人
  • 「ASTを利用したツールを使ったことはあるが、その内部にある仕組みまでは知らないな」という人
4