シリーズバックナンバー
- 何も考えずに Emacs を使って Clojure の Luminus webframework を使う
- Luminus のサーバ側で手っ取り早くAPIを試したいメモ書き
- Luminus で re-frame 、ping-pong ボタンを追加してみるメモ書き
- Luminus で GCE 上の API を叩いてみる
急募:なんか見える Web サーバ建てたい
先日大学にてとある課題をチキンレースしまして、その際にこのような要求が生まれました。
具体的に何がしたかったかと言いますと、何らかの機能を果す機械学習APIをGCE上で複数動かしており、それを用いて何か目に優しい形にしてデモンストレーションをしよう、という事です。
なんのことはなしに Django でも使えば?という御方もいらっしゃいますでしょうが、私は Python コードを見ると Tensorflow や PyTorch のことばかり頭に浮かんでしまい何も手に付かないという病を患っているため、別の策を考える必要がありました。
そんなわけで当時持っていたスキルで適当に Web サーバなるものを建てるため、約半年ぶりに Luminus という Webframwork を触ったというわけです。
取り敢えずEmacsとleiningen はインストールしてある。だが何も覚えてない
環境
OS: Manjaro Linux (4.19.16-1-MANJARO) Budgie
Build tool: leiningen (Leiningen 2.8.3 on Java 1.8.0_192 OpenJDK 64-Bit Server VM)
Editor: Emacs 26.1
という感じになっています。つまり Manjaro Linux を仮想環境などに入れて、
sudo pacman -Syu base-devel
sudo pacman-mirrors --fasttrack && sudo pacman -Syy
sudo pacman -S fcitx fcitx-kkc fcitx-configtool fcitx-gtk3
echo -e "
# fcitx settings ##########
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim
######################### " >> ~/.profile
fcitx-autostart
sudo pacman -S emacs yaourt
yaourt -S google-chrome leiningen emacs-mozc otf-source-han-code-jp
reboot
# この後 fcitx の設定をする
# (右下キーボードアイコンー>configure-> + ボタン -> Only Show Current Language のチェックを外す
# -> kkc と入力し、 Kana Kanji を選択
# -> Global Config タブ -> Trigger Input Method を変更 (Defaultは Ctrl+Space))
# フォントの設定は左下メニューボタンから Budgie Desktop Settings より行えば良い
みたいなことをした後になります。
取り敢えず Spacemacs を入れよう。
Spacemacs は Emacs の拡張で、ちょっと時間を貪ってしまう Emacs の設定をささっと済ませてくれます。
rm -rf .emacs.d
git clone https://github.com/syl20bnr/spacemacs
としてEmacsを立ち上げましょう。
色々聞かれると思いますが、このあたりは github のページを参考にしながら選択してください。(個人的なオススメは、Emacs-> Spacemacs -> ivy) です。
次に ~/.spacemacs を開きます。
dotspacemacs-configuration-layers と dotspacemacs-additional-packages を以下のように編集します。これで色々 clojure の拡張が入ります。
dotspacemacs-configuration-layers
'(
html
python
clojure
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press <SPC f e R> (Vim style) or
;; <M-m f e R> (Emacs style) to install them.
;; ----------------------------------------------------------------
ivy
auto-completion
better-defaults
emacs-lisp
git
;; markdown
org
(shell :variables
shell-default-height 30
shell-default-position 'bottom)
spell-checking
syntax-checking
version-control
)
dotspacemacs-additional-packages '(
paredit
mozc
)
次に ~/.emacs.d/init.el に以下の行を追加します。
これで C-\
で日本語が入力できます。
(require 'mozc)
(setq default-input-method "japanese-mozc")
(setq mozc-candidate-style 'overlay)
設定を反映するためにEmacsを再起動します。
環境はとりあえず整った、後はプロジェクトの立ち上げ
Emacs より Eshell を立ち上げます。
cd ~/
mkdir Github
# 別にどんな名前でも良いですが、将来的に git 管理をするならこうした方がわかりやすいと個人的なイメッジ...
cd Github
lein new luminus demo-app +reitit +aleph +swagger +re-frame +auth +oauth
cd demo-app
echo "lein new luminus demo-app +reitit +aleph +swagger +re-frame +auth +oauth" >> luminus-build-opts
# これは Luminus でどんなビルドオプションを付けたのかを後々わかるようにするためのメモです。
lein deps
次に、{project-name}/project.clj
を開き、そのバッファ上で M-x cider-jack-in
(或いは C-c M-j
) で cider に接続します。cider は Emacs においての Clojure の開発環境で、開いているプロジェクトに対して開かれます。
接続されたら、bufferを *cider-repl ...*
に切り替えます。
repl 内で以下の式を打ちこみます。
user> (start)
user> (mount/start [])
user> (use 'figwheel-sidecar.repl-api)
user> (start-figwheel!)
次に localhost:3000 を google-chrome で開けば以下のような感じになります。
とりあえず動いた、次はコードを書こう
別の記事で書きます。