Page 1
なぜ2018年にIDEと
Emacsを選ぶのか
Why was IDE and Emacs chosen, now in 2018?
2018-02-19 FJCT #techbeerbash
Tech Beer Bash 2018 vol.1
公開日:
by USAMI Kenta@tadsan
に東京都新宿区北新宿の富士通クラウドテクノロジーズ株式会社(新宿フロントタワー)で開催された『Tech Beer Bash 2018 vol.1』でライトニングトーク(5分)として発表しました。
Why was IDE and Emacs chosen, now in 2018?
2018-02-19 FJCT #techbeerbash
Tech Beer Bash 2018 vol.1
アジェンダ
1. PHPはどんな言語か2. Emacsでなにができるか3. IDEに何を期待するか
はじめに言っておく
実用的なPHPのEmacs環境構築
エディタくらい好きなの選びたい
勝つとか負けるとかの話ではない
エディタ選択は専門職たるエンジニアの裁量の範疇
本当にそれでエラーを起こさない自信があるならな
僕は自信がない
(IntelliJ IDEA, RubyMine)
PhpStorm先生はお前の先輩よりもPHPに詳しい
PhpStorm先生は俺よりもずっとPHPに詳しい
いますぐ生産性を上げたいなら素直にIDEを買っておけ
IDE(IntelliJ IDEA/PhpStorm)のライセンス料は人件費よりずっと安い
回し者ではないので宣伝はこの辺に
Why was IDE and Emacs chosen, now in 2018?
2018-02-19 FJCT #techbeerbash
Tech Beer Bash 2018 vol.1
なぜ
それが僕には楽しかったから(Just for Fun)
ほとんど全ての機能をハックできるエディタだから
ほとんど全て
誇張ではない
エディタ機能の多くの部分はLispで実装される
C言語で実装された関数もラップできるし、動的に上書きもできる
Lispの言語の強力さもある
http://practical-scheme.net/trans/beating-the-averages-j.html
https://cruel.org/freeware/hacker.html
職業エンジニアとしての見識を広めるために、見知らぬ言語の見識を深めるのは悪くない
異質なものに触れて常用する言語を相対化することで得られるものはある
1. PHPはどんな言語か
PHPを書いたことはありますか?
いろいろなコードが書ける
<!DOCTYPE html><html><head><title>Hello, PHP!</title></head><p><?php if (date('H') < 19): ?>こんにちは<?php else: ?>こんばんは<?php endif; ?></p><p>今は<?= htmlspecialchars(date('H')) ?>時です</p>
<?php require 'bootstrap.php';$db = mysqli_connect();$stmt = mysqli_prepare($db, 'SELECT * FROM books');mysqli_stmt_execute($stmt);print '<h1>本の一覧</h1>';print '<ul>';foreach ($stmt as $s){print '<li>'; print $s->name; print ‘</li>';}print '</ul>';
<?php namespace MyApp\Controller;class BooksController extends BaseController{public function index() {$books = Books::getAll();$this->render(compact("books"));}}
(当然ながら)Webアプリに多用される言語
なんとなくPerlっぽさ(変数に$)があり、PHP5ではちょっとJavaっぽい見ためのOOPが入ってる
むかしながらのおてがるCGIっぽいスクリプト
フレームワークを利用した階層構造アプリケーション
どちらもできるのがPHP
ちゃんとしたパッケージマネージャがある
Composer npm, Bundlerのようなもの
動的型検査
変数の型は実行時までわからない
型宣言がある
<?php/*** @param float $height* @param float $top* @param float $bottom* @return float*/function trapezoid($height, $top, $bottom) {return (($top + $bottom) / 2) * $height;}
<?php function trapezoid(float $height,float $top, float $bottom): float{return (($top + $bottom) / 2) * $height;}
JavaScript,Python,Rubyなどと並ぶ動的プログラミング言語
2018年現在おそらく唯一まともにPHPの型について書いてある紙(雑誌)
PHPはオープンクラス(モンキーパッチ)はないので、クラスが実行時に拡張されることはあまり考えなくてよい
PHP標準勧告
本来のPHPはカオスなCGI
フレームワークでオブジェクトを相互運用できるようにするための足枷
実行環境
たいてい本番運用環境(GNU/Linux,まれにFreeBSD)と開発環境(Mac, Windows,デスクトップLinux)は異なる
2. IDEに何を期待するか
PhpStormはPHPのコンパイラ、黄色いやつはゆるさない
@tanakahisateru said...
https://twitter.com/t_wada/status/819379053530529792
精度の高い静的解析と型推論
それに裏打ちされた、入力補完(メソッド/プロパティ)、定義ジャンプ、未定義検出、型エラー検出、リファクタリング、etc, etc...
大事なことは
自分の誤ちにすぐに気付けること
黄色いやつ
黄色いやつ
黄色いやつ
次にすることを示してくれること
Guzzle(HTTPクライアント)でリクエストする
レスポンス得たい次にどうする?
ソースコードを読むドキュメントを探す?
動的言語であっても、強力な静的解析機能でサポートしてくれるのが理想的なIDE
カオスなPHPを御するためにIDEは強大な助け
3. Emacsで何ができるか
さて
いまどきEmacs?
要約すると
Emacsの強さは拡張性であり、基本機能は残念ながらそれほど強くはない
いまどきテキストエディタでIDEに対抗しようとすることは、竹槍で戦闘機に対抗しようとすることに等しい
端末でSSHでログインした先の鯖でも動作する、といったメリットはある
(これは開発よりはインフラのサーバオペレーション寄りの需要ではある)
逆に「Emacsはターミナルで動かすもの」と誤解があるかもしれない
逆に「Emacsはターミナルで動かすもの」と誤解があるかもしれない
ほかのツールを組み合せることで匹敵する機能を持たせることはできる
しかし
現時点で残念ながら選ぶ・組み合せるの概念から抜け出せない
PhpStormには埋められない不満もある
PhpStormユーザは「設定」しかできないが、Emacsはいつでも自分で「実装」できる
まとめ
すぐに強力な開発環境が欲しいなら商用IDE
環境をハックして自分を前進させながらEmacs
両方使ってもいい
プロとしての道具を選ぼう
残念ながらEmacsは贔屓目に見て非力
それはそれとしてEmacsをハックするのは楽しい
自分といっしょに強くなれる
そんなわけでいろいろ作ってきた
tadsan先生の次回作にご期待ください
お前がEmacs Lisperになるんだよ
