Skip to content

なぜ2018年にIDEとEmacsを選ぶのか

公開日:

東京都新宿区北新宿富士通クラウドテクノロジーズ株式会社(新宿フロントタワー)で開催された『Tech Beer Bash 2018 vol.1』でライトニングトーク(5分)として発表しました。

Download PDF

スライドテキスト

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

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE
  • GitHub/Packagistでは id: zonuexe
  • ピクシブ株式会社技術基盤チーム (pixiv.net)
  • Emacs Lisper, PHPer
  • 入社前は自宅警備をしながらRuby書いてた
  • Emacs PHP Modeのメンテナ引き継ぎました
  • Qiitaに記事を書いたり変なコメントしてるよ

Page 3

Page 4

Page 5

Page 6

アジェンダ

Page 7

1. PHPはどんな言語か2. Emacsでなにができるか3. IDEに何を期待するか

Page 8

はじめに言っておく

Page 9

実用的なPHPのEmacs環境構築

Page 10

Page 11

エディタくらい好きなの選びたい

Page 12

勝つとか負けるとかの話ではない

Page 13

エディタ選択は専門職たるエンジニアの裁量の範疇

Page 14

本当にそれでエラーを起こさない自信があるならな

Page 15

僕は自信がない

Page 16

pixiv <3 PhpStorm

希望者はIDEのライセンス購入

(IntelliJ IDEA, RubyMine)

Page 17

PhpStorm先生はお前の先輩よりもPHPに詳しい

Page 18

PhpStorm先生は俺よりもずっとPHPに詳しい

Page 19

いますぐ生産性を上げたいなら素直にIDEを買っておけ

Page 20

IDE(IntelliJ IDEA/PhpStorm)のライセンス料は人件費よりずっと安い

Page 21

回し者ではないので宣伝はこの辺に

Page 22

なぜ2018年にIDEと

Emacsを選ぶのか

Why was IDE and Emacs chosen, now in 2018?

2018-02-19 FJCT #techbeerbash

Tech Beer Bash 2018 vol.1

Page 23

なぜ

Page 24

それが僕には楽しかったから(Just for Fun)

Page 25

ほとんど全ての機能をハックできるエディタだから

Page 26

ほとんど全て

Page 27

誇張ではない

Page 28

エディタ機能の多くの部分はLispで実装される

Page 29

C言語で実装された関数もラップできるし、動的に上書きもできる

Page 30

Lispの言語の強力さもある

Page 31

http://practical-scheme.net/trans/beating-the-averages-j.html

Page 32

https://cruel.org/freeware/hacker.html

Page 33

職業エンジニアとしての見識を広めるために、見知らぬ言語の見識を深めるのは悪くない

Page 34

異質なものに触れて常用する言語を相対化することで得られるものはある

Page 35

1. PHPはどんな言語か

Page 36

PHPを書いたことはありますか?

Page 37

いろいろなコードが書ける

Page 38

テンプレートエンジン

<!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>

Page 39

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>';

Page 40

クラスベースOOP

<?php namespace MyApp\Controller;class BooksController extends BaseController{public function index() {$books = Books::getAll();$this->render(compact("books"));}}

Page 41

(当然ながら)Webアプリに多用される言語

Page 42

なんとなくPerlっぽさ(変数に$)があり、PHP5ではちょっとJavaっぽい見ためのOOPが入ってる

Page 43

むかしながらのおてがるCGIっぽいスクリプト

Page 44

フレームワークを利用した階層構造アプリケーション

Page 45

どちらもできるのがPHP

Page 46

Page 47

ちゃんとしたパッケージマネージャがある

Page 48

Page 49

Composer npm, Bundlerのようなもの

Page 50

動的型検査

Page 51

変数の型は実行時までわからない

Page 52

型宣言がある

Page 53

関数の型注釈 (従来から可能)

<?php/*** @param float $height* @param float $top* @param float $bottom* @return float*/function trapezoid($height, $top, $bottom) {return (($top + $bottom) / 2) * $height;}

Page 54

関数の型宣言 (PHP7から可能)

<?php function trapezoid(float $height,float $top, float $bottom): float{return (($top + $bottom) / 2) * $height;}

Page 55

JavaScript,Python,Rubyなどと並ぶ動的プログラミング言語

Page 56

2018年現在おそらく唯一まともにPHPの型について書いてある紙(雑誌)

Page 57

PHPはオープンクラス(モンキーパッチ)はないので、クラスが実行時に拡張されることはあまり考えなくてよい

Page 58

PSR

PHP標準勧告

Page 59

本来のPHPはカオスなCGI

Page 60

フレームワークでオブジェクトを相互運用できるようにするための足枷

Page 61

実行環境

Page 62

たいてい本番運用環境(GNU/Linux,まれにFreeBSD)と開発環境(Mac, Windows,デスクトップLinux)は異なる

Page 63

2. IDEに何を期待するか

Page 64

PhpStormはPHPのコンパイラ、黄色いやつはゆるさない

@tanakahisateru said...

Page 65

https://twitter.com/t_wada/status/819379053530529792

Page 66

精度の高い静的解析と型推論

Page 67

それに裏打ちされた、入力補完(メソッド/プロパティ)、定義ジャンプ、未定義検出、型エラー検出、リファクタリング、etc, etc...

Page 68

大事なことは

Page 69

自分の誤ちにすぐに気付けること

Page 70

黄色いやつ

Page 71

黄色いやつ

黄色いやつ

Page 72

Page 73

次にすることを示してくれること

Page 74

Guzzle(HTTPクライアント)でリクエストする

Page 75

レスポンス得たい次にどうする?

Page 76

ソースコードを読むドキュメントを探す?

Page 77

Page 78

動的言語であっても、強力な静的解析機能でサポートしてくれるのが理想的なIDE

Page 79

カオスなPHPを御するためにIDEは強大な助け

Page 80

3. Emacsで何ができるか

Page 81

Page 82

Page 83

さて

Page 84

いまどきEmacs?

Page 85

Page 86

要約すると

Page 87

Emacsの強さは拡張性であり、基本機能は残念ながらそれほど強くはない

Page 88

いまどきテキストエディタでIDEに対抗しようとすることは、竹槍で戦闘機に対抗しようとすることに等しい

Page 89

端末でSSHでログインした先の鯖でも動作する、といったメリットはある

Page 90

(これは開発よりはインフラのサーバオペレーション寄りの需要ではある)

Page 91

逆に「Emacsはターミナルで動かすもの」と誤解があるかもしれない

Page 92

逆に「Emacsはターミナルで動かすもの」と誤解があるかもしれない

Page 93

Page 94

Page 95

ほかのツールを組み合せることで匹敵する機能を持たせることはできる

Page 96

しかし

Page 97

現時点で残念ながら選ぶ・組み合せるの概念から抜け出せない

Page 98

PhpStormには埋められない不満もある

Page 99

PhpStormユーザは「設定」しかできないが、Emacsはいつでも自分で「実装」できる

Page 100

まとめ

Page 101

すぐに強力な開発環境が欲しいなら商用IDE

Page 102

環境をハックして自分を前進させながらEmacs

Page 103

両方使ってもいい

Page 104

プロとしての道具を選ぼう

Page 105

残念ながらEmacsは贔屓目に見て非力

Page 106

それはそれとしてEmacsをハックするのは楽しい

Page 107

自分といっしょに強くなれる

Page 108

そんなわけでいろいろ作ってきた

Page 109

Page 110

Page 111

Page 112

Page 113

Page 114

tadsan先生の次回作にご期待ください

Page 115

お前がEmacs Lisperになるんだよ