Slide 1

Slide 1 text

Common Lisp100連発 ゆるめのCommon Lispの紹介をします

Slide 2

Slide 2 text

で,誰? ● Windymeltといいます ○ @windymelt ○ id:Windymelt ● 株式会社はてなでWebアプリケーションエンジニア をやっています(しゃかいじん3ねんめ) ● ふだんはTypeScriptやPerlを書いています ● 趣味の言語はCommon Lisp

Slide 3

Slide 3 text

1: いまLemがアツい!! Common Lisp製エディタのご紹介

Slide 4

Slide 4 text

スクショ ● emacsライク ● vi-modeもある ○ ヤバい! ● アイコン作成中

Slide 5

Slide 5 text

ヤバい! ● 設定も拡張もCommon Lispで書ける ○ 本体といっしょにコンパイルできる ○ →速い!! ● よく使う機能は標準搭載している ○ auto-complete的なやつ(補完機能) ○ paredit的なやつ(カッコの均衡をとるやつ ) ● Common Lispコードを開くとそのままeval・コンパイルできる ○ 動作中(!)のコードにアタッチして関数を書き換えたりできる ○ ↑SWANKというプロトコルで実現されてる

Slide 6

Slide 6 text

今すぐインストール!!! (requires ncurses5) $ brew install roswell #OSX $ https://github.com/roswell/roswell/wiki/Installation#buildin g-from-source (https://bit.ly/2BAqDI1 ) #Ubuntu $ ros setup $ ros install cxxxr/lem $ lem

Slide 7

Slide 7 text

2. Common Lispはモダンだよ!

Slide 8

Slide 8 text

Common Lispは古いって? ● パッケージによるモジュール化(言語標準) ● Unicode ○ 主要な処理系でサポート (SBCL, ClozureCL, CLISP, Allegro CL, ...) ● ビルドツール(ASDF3) ● オブジェクト指向(Common Lisp Object System) ● パッケージインストーラ(Quicklisp) ○ ようするにgem, cpan ● パッケージマネージャ(Qlot) ○ ようするにbundler, carton ● 処理系マネージャ(Roswell) ○ ようするにrbenv, plenv

Slide 9

Slide 9 text

実用言語

Slide 10

Slide 10 text

bloom filter実装してみた https://github.com/windymelt/bloom

Slide 11

Slide 11 text

3: Common Lispをはじめるのは簡単!!!! $ (roswellをインストールする) $ ros run →REPLが出る!!! (print “Hello, World!”) “Hello, World!” ^DでREPLを閉じる!!!

Slide 12

Slide 12 text

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)

Slide 13

Slide 13 text

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がもらえるようになった!!!

Slide 14

Slide 14 text

HTTPアクセス (ql:quickload :dexador) (dex:get “http://localhost:8080/”)

Slide 15

Slide 15 text

6: Docker化できる!!! Docker-composeを使って動作中のコンテナで動いている関数をいじれる https://blog.3qe.us/entry/2018/06/21/025948 === https://bit.ly/2wkQAoO

Slide 16

Slide 16 text

100連発の続きはまたこんど・・・