2018-08-21に催されたLINE Developer Meetup #43(https://line.connpass.com/event/96601/) で発表したものです.
スライドの本体はこちら https://docs.google.com/presentation/d/179Ap4cB2p1JpVK7ds0cNPREcLLv3m6CJqvCKG6QepXU/edit?usp=sharing
Common Lisp100連発ゆるめのCommon Lispの紹介をします
View Slide
で,誰?● Windymeltといいます○ @windymelt○ id:Windymelt● 株式会社はてなでWebアプリケーションエンジニアをやっています(しゃかいじん3ねんめ)● ふだんはTypeScriptやPerlを書いています● 趣味の言語はCommon Lisp
1: いまLemがアツい!!Common Lisp製エディタのご紹介
スクショ● emacsライク● vi-modeもある○ ヤバい!● アイコン作成中
ヤバい!● 設定も拡張もCommon Lispで書ける○ 本体といっしょにコンパイルできる○ →速い!!● よく使う機能は標準搭載している○ auto-complete的なやつ(補完機能)○ paredit的なやつ(カッコの均衡をとるやつ )● Common Lispコードを開くとそのままeval・コンパイルできる○ 動作中(!)のコードにアタッチして関数を書き換えたりできる○ ↑SWANKというプロトコルで実現されてる
今すぐインストール!!! (requires ncurses5)$ brew install roswell #OSX$https://github.com/roswell/roswell/wiki/Installation#building-from-source (https://bit.ly/2BAqDI1 )#Ubuntu$ ros setup$ ros install cxxxr/lem$ lem
2. Common Lispはモダンだよ!
Common Lispは古いって?● パッケージによるモジュール化(言語標準)● Unicode○ 主要な処理系でサポート (SBCL, ClozureCL, CLISP, Allegro CL, ...)● ビルドツール(ASDF3)● オブジェクト指向(Common Lisp Object System)● パッケージインストーラ(Quicklisp)○ ようするにgem, cpan● パッケージマネージャ(Qlot)○ ようするにbundler, carton● 処理系マネージャ(Roswell)○ ようするにrbenv, plenv
実用言語
bloom filter実装してみたhttps://github.com/windymelt/bloom
3: Common Lispをはじめるのは簡単!!!!$ (roswellをインストールする)$ ros run →REPLが出る!!!(print “Hello, World!”)“Hello, World!”^DでREPLを閉じる!!!
4: Webアプリケーションを作成する$ ros run(ql:quickload :caveman2)(caveman2:make-project #P"test-app")^D (いったんREPLを抜ける)$ cd test-app$ ros run -S .(ql:quickload :test-app)(test-app:start :port 8080)
5: Webアプリで遊ぼう$ ros install clack # Webアプリを起動するラッパを入れる$ lem src/web.lisp(render #P”...”) となっている箇所を(render-json ‘(“a” “b” “c”))にしてみる$ ros -S . `which clackup` app.lisp --port 8080→JSONがもらえるようになった!!!
HTTPアクセス(ql:quickload :dexador)(dex:get “http://localhost:8080/”)
6: Docker化できる!!!Docker-composeを使って動作中のコンテナで動いている関数をいじれるhttps://blog.3qe.us/entry/2018/06/21/025948===https://bit.ly/2wkQAoO
100連発の続きはまたこんど・・・