(ideユーザのための) clojureのemacs開発環境について

39
{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad ”} [Clojure Focus] Clojure開発環境勉強会(エディタ回) Clojureの Emacs開発環境について 1

Upload: kazuhiro-hara

Post on 14-Aug-2015

388 views

Category:

Internet


3 download

TRANSCRIPT

Page 1: (IDEユーザのための) ClojureのEmacs開発環境について

{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}

[Clojure Focus] Clojure開発環境勉強会(エディタ回)

ClojureのEmacs開発環境について

1

Page 2: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

自己紹介

2

原 一浩ハラ カズヒロ

ClojureScript + Electronのプロジェクトビルドツール descjop の作者

https://greative.jp/

@kara_d

http://descjop.org/

https://designudge.org/

Web のデザインからデベロップメントまでClojure のコーナーもあるよ

2

Page 3: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

ちょっと前の著書➡ Play Framework 2徹底入門 - JavaではじめるアジャイルWeb開発

3

実践編(4章~7章)を担当

✦サンプルアプリの企画から設計、構築、テスト、管理画面作成までを一通り

 マニュアルにはない詰まりポイントとか もちりばめられてます。

3

Page 4: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

Clojureで作ったもの➡ 自社サイトをリニューアル https://greative.jp/

44

Page 5: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

Clojureで作ったもの➡ Webメディア と そのAdmin https://designudge.org/

55

Page 6: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

designudgeでClojureコーナー➡ designudge https://designudge.org/ にて、「ミカヅキClojure」というコーナーをはじめます。

6

おたのしみに!!

6

Page 7: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

そのほか、仕事でつくったもの➡ Webアプリ用APIのモックアップ➡ Webサービス用APIサーバ➡ Webサービスの管理画面 ➡ そのほかにも•負荷試験用ツール•テストケース生成ツール•Webサイトのクローラ•スクリーンキャプチャツール•画像の配色解析ツール

77

Page 8: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 8

アジェンダ

8

Page 9: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

アジェンダ➡ IDEからEmacsへ•いかにしてEmacs使いへ再入門したのか➡ マイEmacs環境はこんなかんじ•さらします ><➡ Clojureの開発でEmacsに入れると便利なモノ •使えるプラグイン、設定など➡ よく使う機能 TOP 10•結局そんなに多くの機能は使ってない➡ その他、Clojure系Emacsプラグイン•教えてください

99

Page 10: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 10

IDEからEmacsへ

10

Page 11: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 11

IDEと共に生きてきたFlash / Flex Builder / Flash Builder、FDT、Dreamweaver、Aptana、Net Beans、Eclipse、IntelliJ IDEA...

11

Page 12: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 12

CUIのTEXT EDITORvim は、サーバー管理時とかくらいEmacs は、過去数度挫折...

12

Page 13: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

なぜEmacsにしたのか➡ Lispと共にいきるから•設定時も(Emacs )Lispとつきあう➡ IDEA重い•基本的にIDEみんな重い•でも、Javaメインの頃は、IDEないとツラすぎた➡ いろいろなモノで開発する• MBPだけでなく、2010年モデルのMBA、iPadなど

➡ いろいろな場所で開発する•ローカルだけでなく、会社のEC2インスタンス、仕事で使うVM、社内サーバなど

1313

Page 14: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

Emacsへの道のり➡ 移行期間 : 6ヶ月• 2014年夏から一気にエディタはEmacsのみで生活する•この期間の苦しみは筆舌に尽くしがたい•覚えるために、マイチートシートを少しずつつくる日々➡ 移行後•様々な小さな開発(PHP、Perl、Ruby、JavaScript、HTML/CSS)をEmacsでやってみた

•でもJavaとかScalaは、IDEA一択➡ 弊害• Key noteとかの保存時もC-x C-sを押してしまう

1414

Page 15: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

Emacs利用の基本戦略➡ 携帯性•どのPC/Mac、タブレットなどのモバイルデバイスからもフルスペックで開発ができること

➡ 可搬性•ローカル環境とVM、サーバ環境で同一の状態を作りやすいこと

➡ 一覧性•開発の状態をウインドウ一つで見渡せること、見た目的にGUIとそれほど変わらないこと。つまりIDEの豊富なペイン求む。

1515

Page 16: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 16

マイEmacs環境はこんな感じ

16

Page 17: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

ソフトウェア構成➡ Emacs 24.4.1• GUI版は入れていない•基本、ターミナルからのみ使う➡ GNU Screen 4.02.01• tmuxは、なんだか馴染めず、使い慣れているscreen•レイアウト機能を利用して3ペインの状態へ切り替え

1717

Page 18: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

IDEライクにClojure開発をするために必要な5つのこと➡ いくつかの用途を持ったペイン➡ 複数ファイルを開いたときのタブ移動➡ すぐに実行(テスト)しやすい➡ 補完がきちんと効くなど、コーディングサポート➡ 見やすいカラーリング、コードハイライティング

1818

Page 24: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

いまの開発環境

24

右下では、gitやmanual 表示、サーバ起動など

24

Page 25: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 25

Clojureの開発でEmacsに入れると便利なモノ

25

Page 26: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

clojure-mode➡ これがないと始まらないclojureの言語モード

cider➡ clojure 開発用ツール

auto-complete➡ 自動補完プラグイン

2626

Page 27: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

paredit➡ 括弧の処理を楽かつ安全にしてくれる

rainbow-delimiters➡ 括弧を見やすく色付けしてくれる

highlight-symbol➡ 空文字をハイライトしてくれる

2727

Page 28: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

tabbar➡ Emacs用のタブ

sr-speedbar ➡ ディレクトリツリーを表示

hiwin➡ 利用中のウインドウをハイライト表示

2828

Page 29: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

web-mode➡ HTML / CSS / JS のEmacsサポート

emmet-mode➡ EmmetのEmacsサポート

markdown-mode➡ マークダウン用のEmacsサポート

json-mode➡ JSON用のEmacsサポート

2929

Page 30: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

やっている各種設定➡ 行番号の表示• linum を利用➡ Emacs と Mac のクリップボード共有• init.el で設定➡ 行のハイライト• hlline-face を設定➡ テーマの設定• robin-hood というテーマつこてる

3030

Page 31: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 31

Emacs設定周り

31

Page 32: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

~/.lein/profiles.clj の設定➡ 使っていないものまで、設定はしてある

32

{:user  {:plugins  [[lein-­‐idea  "1.0.1"]                                    [lein-­‐typed  "0.3.5"]                                    [lein-­‐marginalia  "0.8.0"]                                    [lein-­‐kibit  "RELEASE"]                                    [cider/cider-­‐nrepl  "0.8.2"]]                :aliases  {"slamhound"  ["run"  "-­‐m"  "slam.hound"]}                :dependencies  [[slamhound  "RELEASE"]                                              [org.clojure/tools.trace  "RELEASE"]]}}

32

Page 33: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

Emacsのインストール➡ Windows 機はGUI版を使った•それでもかなりツラかった➡ Mac は、brew にてインストール•超楽

よく使う機能について➡ 関数を独自ショートカットに割り当てている➡ CTRL+c を起点にいろいろ設定

3333

Page 34: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 34

よく使う機能TOP10

34

Page 35: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

よく使う機能 : 1-5➡ cider-jack-in• nrepl 接続➡ indent-region•フォーマット的なもの➡ paredit-forward-slurp(barf)-sexp• ()で喰う、吐く➡ mark-sexp•現在選択している()内を一括選択➡ sr-speedbar-toggle• speed-barを出したり閉じたり

3535

Page 36: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

よく使う機能 : 6-10➡ clojure-insert-ns-form-at-point• Clojureのnsが簡単に生成できる➡ tabbar-forward(backward)•タブの前後移動➡ cider-jump-to-var、highlight-symbol•カーソル位置のソースへジャンプ (あんま使ってない)、varをハイライト➡ cider-eval-last-sexp•その場でちょっとした評価をする(あんま使ってない)➡ cider-doc• doc関数を実行できる(あんま使ってない)

3636

Page 37: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org 37

その他、あまりよくわかっていないClojure系プラグイン群

37

Page 38: (IDEユーザのための) ClojureのEmacs開発環境について

#clojure_focusdesignudge.org

その他、Clojure向けプラグイン➡ Slamhound• https://github.com/technomancy/slamhound➡ kibit• https://github.com/jonase/kibit➡ clomacs• https://github.com/clojure-emacs/clomacs➡ squiggly-clojure• https://github.com/clojure-emacs/squiggly-clojure

38

* MEMO *

38

Page 39: (IDEユーザのための) ClojureのEmacs開発環境について

{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}

[Clojure Focus] Clojure開発環境勉強会(エディタ回)

ClojureのEmacs開発環境について

ありがとうございました !!

39