Page 1
なぜ2018年にIDEと Emacsを選ぶのか
Why was IDE and Emacs chosen, now in 2018?
#techbeerbash
2018-02-19 FJCT
Tech Beer Bash 2018 vol.1
公開日:
by USAMI Kenta @tadsan
なぜ2018年にIDEと Emacsを選ぶのか
Why was IDE and Emacs chosen, now in 2018?
#techbeerbash
2018-02-19 FJCT
Tech Beer Bash 2018 vol.1
お前誰よ
うさみけんた (@tadsan) / Zonu.EXE
アジェンダ
1. はどんな言語か
PHP
2. でなにができるか
Emacs
3. に何を期待するか
IDE
はじめに
言っておく
実用的なPHPの Emacs環境構築
エディタくらい
好きなの選びたい
勝つとか負けると
かの話ではない
エディタ選択は 専門職たるエンジ ニアの裁量の範疇
本当にそれでエラー
を起こさない
自信があるならな
僕は自信がない
pixiv
PhpStorm
<3
希望者はIDEのライセンス購入
(IntelliJ IDEA, RubyMine)
PhpStorm先生は
お前の先輩よりも
PHPに詳しい
PhpStorm先生は
俺よりもずっと
PHPに詳しい
いますぐ生産性を 上げたいなら素直 にIDEを買っておけ
IDE
( )
IntelliJ IDEA/PhpStorm
のライセンス料は
人件費よりずっと安い
回し者では
ないので
宣伝はこの辺に
なぜ2018年にIDEと Emacsを選ぶのか
Why was IDE and Emacs chosen, now in 2018?
#techbeerbash
2018-02-19 FJCT
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>
CGIっぽいスクリプト
<?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>';
クラスベースOOP
<?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;
}
関数の型宣言
(PHP7から可能)
<?php
function trapezoid(float $height,
float $top, float $bottom): float
{
return (($top + $bottom) / 2) * $height;
}
JavaScript,Python, Rubyなどと並ぶ動的 プログラミング言語
2018年現在おそらく唯一まともに
PHPの型について書いてある紙(雑誌)
PHPはオープンクラス
(モン
はないので、クラ
キーパッチ)
スが実行時に拡張されるこ
とは 考えなくてよい
あまり
PSR
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に
なるんだよ