(ideユーザのための) clojureのemacs開発環境について
TRANSCRIPT
{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}
[Clojure Focus] Clojure開発環境勉強会(エディタ回)
ClojureのEmacs開発環境について
1
#clojure_focusdesignudge.org
自己紹介
2
原 一浩ハラ カズヒロ
ClojureScript + Electronのプロジェクトビルドツール descjop の作者
https://greative.jp/
@kara_d
http://descjop.org/
https://designudge.org/
Web のデザインからデベロップメントまでClojure のコーナーもあるよ
2
#clojure_focusdesignudge.org
ちょっと前の著書➡ Play Framework 2徹底入門 - JavaではじめるアジャイルWeb開発
3
実践編(4章~7章)を担当
✦サンプルアプリの企画から設計、構築、テスト、管理画面作成までを一通り
マニュアルにはない詰まりポイントとか もちりばめられてます。
3
#clojure_focusdesignudge.org
Clojureで作ったもの➡ 自社サイトをリニューアル https://greative.jp/
44
#clojure_focusdesignudge.org
Clojureで作ったもの➡ Webメディア と そのAdmin https://designudge.org/
55
#clojure_focusdesignudge.org
designudgeでClojureコーナー➡ designudge https://designudge.org/ にて、「ミカヅキClojure」というコーナーをはじめます。
6
おたのしみに!!
6
#clojure_focusdesignudge.org
そのほか、仕事でつくったもの➡ Webアプリ用APIのモックアップ➡ Webサービス用APIサーバ➡ Webサービスの管理画面 ➡ そのほかにも•負荷試験用ツール•テストケース生成ツール•Webサイトのクローラ•スクリーンキャプチャツール•画像の配色解析ツール
77
#clojure_focusdesignudge.org 8
アジェンダ
8
#clojure_focusdesignudge.org
アジェンダ➡ IDEからEmacsへ•いかにしてEmacs使いへ再入門したのか➡ マイEmacs環境はこんなかんじ•さらします ><➡ Clojureの開発でEmacsに入れると便利なモノ •使えるプラグイン、設定など➡ よく使う機能 TOP 10•結局そんなに多くの機能は使ってない➡ その他、Clojure系Emacsプラグイン•教えてください
99
#clojure_focusdesignudge.org 10
IDEからEmacsへ
10
#clojure_focusdesignudge.org 11
IDEと共に生きてきたFlash / Flex Builder / Flash Builder、FDT、Dreamweaver、Aptana、Net Beans、Eclipse、IntelliJ IDEA...
11
#clojure_focusdesignudge.org 12
CUIのTEXT EDITORvim は、サーバー管理時とかくらいEmacs は、過去数度挫折...
12
#clojure_focusdesignudge.org
なぜEmacsにしたのか➡ Lispと共にいきるから•設定時も(Emacs )Lispとつきあう➡ IDEA重い•基本的にIDEみんな重い•でも、Javaメインの頃は、IDEないとツラすぎた➡ いろいろなモノで開発する• MBPだけでなく、2010年モデルのMBA、iPadなど
➡ いろいろな場所で開発する•ローカルだけでなく、会社のEC2インスタンス、仕事で使うVM、社内サーバなど
1313
#clojure_focusdesignudge.org
Emacsへの道のり➡ 移行期間 : 6ヶ月• 2014年夏から一気にエディタはEmacsのみで生活する•この期間の苦しみは筆舌に尽くしがたい•覚えるために、マイチートシートを少しずつつくる日々➡ 移行後•様々な小さな開発(PHP、Perl、Ruby、JavaScript、HTML/CSS)をEmacsでやってみた
•でもJavaとかScalaは、IDEA一択➡ 弊害• Key noteとかの保存時もC-x C-sを押してしまう
1414
#clojure_focusdesignudge.org
Emacs利用の基本戦略➡ 携帯性•どのPC/Mac、タブレットなどのモバイルデバイスからもフルスペックで開発ができること
➡ 可搬性•ローカル環境とVM、サーバ環境で同一の状態を作りやすいこと
➡ 一覧性•開発の状態をウインドウ一つで見渡せること、見た目的にGUIとそれほど変わらないこと。つまりIDEの豊富なペイン求む。
1515
#clojure_focusdesignudge.org 16
マイEmacs環境はこんな感じ
16
#clojure_focusdesignudge.org
ソフトウェア構成➡ Emacs 24.4.1• GUI版は入れていない•基本、ターミナルからのみ使う➡ GNU Screen 4.02.01• tmuxは、なんだか馴染めず、使い慣れているscreen•レイアウト機能を利用して3ペインの状態へ切り替え
1717
#clojure_focusdesignudge.org
IDEライクにClojure開発をするために必要な5つのこと➡ いくつかの用途を持ったペイン➡ 複数ファイルを開いたときのタブ移動➡ すぐに実行(テスト)しやすい➡ 補完がきちんと効くなど、コーディングサポート➡ 見やすいカラーリング、コードハイライティング
1818
#clojure_focusdesignudge.org
いまの開発環境
1919
#clojure_focusdesignudge.org
いまの開発環境
20
プロジェクトツリーを表示
20
#clojure_focusdesignudge.org
いまの開発環境
21
エディタ部分なるべくみやすく
21
#clojure_focusdesignudge.org
いまの開発環境
22
どこの画面がEmacsかわかりやすい色付け
22
#clojure_focusdesignudge.org
いまの開発環境
23
だいたい左下はREPL開きっぱ
23
#clojure_focusdesignudge.org
いまの開発環境
24
右下では、gitやmanual 表示、サーバ起動など
24
#clojure_focusdesignudge.org 25
Clojureの開発でEmacsに入れると便利なモノ
25
#clojure_focusdesignudge.org
clojure-mode➡ これがないと始まらないclojureの言語モード
cider➡ clojure 開発用ツール
auto-complete➡ 自動補完プラグイン
2626
#clojure_focusdesignudge.org
paredit➡ 括弧の処理を楽かつ安全にしてくれる
rainbow-delimiters➡ 括弧を見やすく色付けしてくれる
highlight-symbol➡ 空文字をハイライトしてくれる
2727
#clojure_focusdesignudge.org
tabbar➡ Emacs用のタブ
sr-speedbar ➡ ディレクトリツリーを表示
hiwin➡ 利用中のウインドウをハイライト表示
2828
#clojure_focusdesignudge.org
web-mode➡ HTML / CSS / JS のEmacsサポート
emmet-mode➡ EmmetのEmacsサポート
markdown-mode➡ マークダウン用のEmacsサポート
json-mode➡ JSON用のEmacsサポート
2929
#clojure_focusdesignudge.org
やっている各種設定➡ 行番号の表示• linum を利用➡ Emacs と Mac のクリップボード共有• init.el で設定➡ 行のハイライト• hlline-face を設定➡ テーマの設定• robin-hood というテーマつこてる
3030
#clojure_focusdesignudge.org 31
Emacs設定周り
31
#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
#clojure_focusdesignudge.org
Emacsのインストール➡ Windows 機はGUI版を使った•それでもかなりツラかった➡ Mac は、brew にてインストール•超楽
よく使う機能について➡ 関数を独自ショートカットに割り当てている➡ CTRL+c を起点にいろいろ設定
3333
#clojure_focusdesignudge.org 34
よく使う機能TOP10
34
#clojure_focusdesignudge.org
よく使う機能 : 1-5➡ cider-jack-in• nrepl 接続➡ indent-region•フォーマット的なもの➡ paredit-forward-slurp(barf)-sexp• ()で喰う、吐く➡ mark-sexp•現在選択している()内を一括選択➡ sr-speedbar-toggle• speed-barを出したり閉じたり
3535
#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
#clojure_focusdesignudge.org 37
その他、あまりよくわかっていないClojure系プラグイン群
37
#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
{:company “Greative GK” :name “Kazuhiro Hara” :twitter “kara_d” :github “https://github.com/karad”}
[Clojure Focus] Clojure開発環境勉強会(エディタ回)
ClojureのEmacs開発環境について
ありがとうございました !!
39