SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
5分でわかる静的解析入門
Learn PHP static analysis in 5 min.
2016-07-20 PHP BLT #5
お前誰よ
• うさみけんた (@tadsan) / Zonu.EXE
• GitHub/Packagistでは id:zonuexe
• Ruby書いてたら、何の因果かPHPを書く仕事に
• 好きな言葉はメタプログラミングです
さて
敵を知れば百戦殆ふからず
• プログラムを実際に動かさずして、

ソフトウェアの性質を把握する
• いろんなツールとか手法がある
• 人間がPull Requestのdiffを見て

レビューするのも一種の静的解析
• ユニットテストは実際に動かすので

動的検査の一種
wc -l **/*.php
wc -l **/*.php
• Unixの標準コマンド
• お前は何を言ってるんだ
• ファイルの行数を測る (-l)
• バイト数を測る (-c)
php -l a.php
php -l target.php
• コードがSyntax Errorではないか

検査する
• 実際に運用されるサーバーと同じ

バージョンを利用する
• git ls-files | grep '.php$' |
xargs -IFILE -n1 php -l FILE
token_get_all()
token_get_all()
• PHPの標準関数 (要tokenizer)
• スクリプトを構文要素ごとに

切り分けてくれる(だけ)
• 構文解析はしてくれない… (重要)
• 目的を集中すれば小さなパーサーは
意外に書けた
preg_match()
preg_match()
• PHPの標準関数(最終兵器)
• 雑な正規表現でも意外と機能する
• 正規表現パターンなら誰でも書ける
ので、チームでメンテナンスできる
preg_match()
• こんな感じで配列にパターンを

並べていく
[
'level' => 'error',
'desc' => 'mt_srand() は使用禁止',
'pattern' => [
'/[^a-zA-Z0-9_$:>]mt_srand *(/i' => false,
],
],
そのほか
よのなかにはたくさん実装ある
• PHPの静的解析 — Algo13 2016.04.11 ドキュメント 

http://algo13.net/php/tips/static-analysis.html
• ↑良い感じにまとまってるネ申記事
• phpmd, phpcs, php7cc…
• 簡単な構文解析のサンプル載ってる
何をしたいのか
静的解析できると何が嬉しいのか
• Syntax Errorなファイルを

デプロイしないようにしたい…
• 弊社でも昔はありました
• コードレビューでつまらないことを
指摘したくない
• 割と膨大なコードを安全に

PHP7に着地させたい
最近のナウいツール
etsy/phan
• Rasmus Lerdorfを要するEtsy社が
開発する静的解析ツール
• 未定義関数とか型がをかしいとか、

とにかくいろんな指摘してくれる
• PHPDocの型を解析してくれる
• 日本語で紹介すればバズれるぞ!!!
最近やってること
baguette/definfo
• 最近夜な夜な作ってるツール
• 実行時情報(Reflection)を使って

いろいろ指図してくれるように

するつもり
• タグジャンプの代替にしたい
• 静的解析はしないつもりだったけど、
どうにもならないところは

がんばって構文解析してる

Contenu connexe

Tendances

Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクトMoriyoshi Koizumi
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークJun-ichi Sakamoto
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツールtotty jp
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったHironobu Saitoh
 
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会Osamu Kawasaki
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応KyutatsuNishiura
 
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜parrotstudio
 
負荷テストについて
負荷テストについて負荷テストについて
負荷テストについてTakahiro Ishida
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpYuuki Takezawa
 
vimプラグインでよりよい(ry
vimプラグインでよりよい(ryvimプラグインでよりよい(ry
vimプラグインでよりよい(rysoh335
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSTomoki Hasegawa
 
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったらWataru Terada
 
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7Hiroshi Toda
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたAkira Kaneda
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9Hiroshi Toda
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学びMasaru Matsuo
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料Junichi Ishida
 
前衛地獄を生き残る
前衛地獄を生き残る前衛地獄を生き残る
前衛地獄を生き残るgn_spawn
 

Tendances (20)

Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
恋に落ちるデプロイツール
恋に落ちるデプロイツール恋に落ちるデプロイツール
恋に落ちるデプロイツール
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会はじめてLaravelさわった 第86回php勉強会
はじめてLaravelさわった 第86回php勉強会
 
mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応mypy - 待望のPython3.9型ヒント対応
mypy - 待望のPython3.9型ヒント対応
 
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
 
負荷テストについて
負荷テストについて負荷テストについて
負荷テストについて
 
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulpphp開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
 
vimプラグインでよりよい(ry
vimプラグインでよりよい(ryvimプラグインでよりよい(ry
vimプラグインでよりよい(ry
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
 
LL Onsen 2008 OpenPrinting
LL Onsen 2008 OpenPrintingLL Onsen 2008 OpenPrinting
LL Onsen 2008 OpenPrinting
 
技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら技術ドキュメントで難しい英文に出会ったら
技術ドキュメントで難しい英文に出会ったら
 
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
がんばらない多言語化 @ FuelPHP&CodeIgniter ユーザの集い #7
 
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみたPhpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
 
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
PHPerのための(不遇に負けない)Selenium入門 @ FuelPHP&CodeIgniter ユーザの集い #9
 
Laravel の学び方と得られる学び
Laravel の学び方と得られる学びLaravel の学び方と得られる学び
Laravel の学び方と得られる学び
 
PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料PHPカンファレンス2014の懇親会飛び込みLT資料
PHPカンファレンス2014の懇親会飛び込みLT資料
 
前衛地獄を生き残る
前衛地獄を生き残る前衛地獄を生き残る
前衛地獄を生き残る
 
Frank-afcproxy
Frank-afcproxyFrank-afcproxy
Frank-afcproxy
 

Similaire à 5分でわかる静的解析入門

YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
Php development efficiency improvement
Php development efficiency improvementPhp development efficiency improvement
Php development efficiency improvement伸幸 茂木
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境Fumihito Yokoyama
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニングMunenori Sugimura
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話Hisateru Tanaka
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまでPowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまでKazuhiro Matsushima
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由Kenichi Mukai
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven DevelopmentRyo Tomidokoro
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyoShuyo Nakatani
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46civicpg
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45civic Sasaki
 
International php conference 2016 参加レポート
International php conference  2016 参加レポートInternational php conference  2016 参加レポート
International php conference 2016 参加レポートRyosuke Miyahara
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについてHiraku Nakano
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
Php勉強会スライド
Php勉強会スライドPhp勉強会スライド
Php勉強会スライドsuzumurashingo
 

Similaire à 5分でわかる静的解析入門 (20)

YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
Php development efficiency improvement
Php development efficiency improvementPhp development efficiency improvement
Php development efficiency improvement
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
Phpstormちょっといい話
Phpstormちょっといい話Phpstormちょっといい話
Phpstormちょっといい話
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
PowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまでPowerShellが苦手だった男がPowerShellを愛するようになるまで
PowerShellが苦手だった男がPowerShellを愛するようになるまで
 
フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由フレームワークを使うべき 3 つの理由
フレームワークを使うべき 3 つの理由
 
Behat Driven Development
Behat Driven DevelopmentBehat Driven Development
Behat Driven Development
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46私の好きなPython構文 vol.2 #nds46
私の好きなPython構文 vol.2 #nds46
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
International php conference 2016 参加レポート
International php conference  2016 参加レポートInternational php conference  2016 参加レポート
International php conference 2016 参加レポート
 
Write-Help
Write-HelpWrite-Help
Write-Help
 
composer-scriptsについて
composer-scriptsについてcomposer-scriptsについて
composer-scriptsについて
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
Php勉強会スライド
Php勉強会スライドPhp勉強会スライド
Php勉強会スライド
 

Plus de Kenta USAMI

たのしい独自フレームワーク
たのしい独自フレームワークたのしい独自フレームワーク
たのしい独自フレームワークKenta USAMI
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixivKenta USAMI
 
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHPKenta USAMI
 
はじめてのUser-Agent文字列
はじめてのUser-Agent文字列はじめてのUser-Agent文字列
はじめてのUser-Agent文字列Kenta USAMI
 
pixivとl10n/i18n
pixivとl10n/i18npixivとl10n/i18n
pixivとl10n/i18nKenta USAMI
 
Rubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミングRubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミングKenta USAMI
 
これからの名前の話をしよう
これからの名前の話をしようこれからの名前の話をしよう
これからの名前の話をしようKenta USAMI
 
近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話Kenta USAMI
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSLKenta USAMI
 
札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのかKenta USAMI
 
tadsanとは誰か
tadsanとは誰かtadsanとは誰か
tadsanとは誰かKenta USAMI
 
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかKenta USAMI
 
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)Kenta USAMI
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてKenta USAMI
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』Kenta USAMI
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)Kenta USAMI
 
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)Kenta USAMI
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Kenta USAMI
 

Plus de Kenta USAMI (20)

たのしい独自フレームワーク
たのしい独自フレームワークたのしい独自フレームワーク
たのしい独自フレームワーク
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
 
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
 
はじめてのUser-Agent文字列
はじめてのUser-Agent文字列はじめてのUser-Agent文字列
はじめてのUser-Agent文字列
 
pixivとl10n/i18n
pixivとl10n/i18npixivとl10n/i18n
pixivとl10n/i18n
 
Rubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミングRubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミング
 
Accept-language
Accept-languageAccept-language
Accept-language
 
php.js
php.jsphp.js
php.js
 
これからの名前の話をしよう
これからの名前の話をしようこれからの名前の話をしよう
これからの名前の話をしよう
 
近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSL
 
札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか
 
tadsanとは誰か
tadsanとは誰かtadsanとは誰か
tadsanとは誰か
 
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
 
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
 
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
 

5分でわかる静的解析入門