More Related Content
Similar to Clojureに入門してみた、2017年秋 (20)
Clojureに入門してみた、2017年秋
- 3. ● 小林 達 (こばやし さとし)
● BizReachで3年半。「スタンバイ」「HRMOS」立ち上げ
● 年の割にコード歴短い。雰囲気プログラマー
○ Scalaが主でサーバーサイドよりのフルスタック
● 土日は、娘の相手と、娘の写真と、料理担当
● Clojureは興味だけは前からあった
○ これは半年前にスケジュール登録
○ 登壇者3人が決まって役割を75%終えたようなもの
○ Clojureを1ヶ月経ったが、ほぼインプットのみ
誰かな?
- 7. Step 1. Clojureのコンセプトを掴む
Clojure - 論理的根拠 より
● Lisp: シンプル、データとしてのコード(code-as-data)
○ 文法が少ない。data-as-code = evalみたいなもの?
○ ただ、括弧が増えすぎない・Javaが呼びやすいよう+αの工夫
● 関数型プログラミングのための言語 (イミュータブル、高階関数)
● 確立されたプラットフォーム(JVM)と共存できる言語
● 並行処理のために設計された言語
また、
● REPLでインタラクティブに開発ができる!
● フレームワークよりライブラリ
● 動的な型付け
- 8. ● 言語としては成熟期に入っていそう
○ Clojure 1.9.0-beta1 (September 2017)
○ Clojure 1.8.0 (January, 2016)
○ Clojure 1.7.0 (June, 2015)
○ Clojure 1.6.0 (March, 2014)
○ Clojure 1.5.1 (March, 2013)
○ Clojure 1.4.0 (April, 2012)
○ Clojure 1.3.0 (September, 2011)
○ Clojure 1.2.1 (September, 2010)
○ Clojure 1.2.0 (August, 2010)
○ Clojure 1.1.0 (January, 2010)
○ Clojure 1.0.0 (July, 2009)
Step 2. Clojureの現在 1/3
- 9. ● Stack Overflow Developer Survey 2017
○ 年収1位!、好きな言語上位!
● JVMerが最後に辿り着く
場所なのかもしれない
Step 2. Clojureの現在 2/3
- 10. 国内事例はどうか (順不同)
● オプトさん -
Clojureをプロダクトに導入した話 - Opt Technologies Magazine
● サイボウズスタートアップさん -
Clojureを用いたWebアプリケーション開発 - SSSSLIDE
● ユーザベースさん - Clojureの世界観 - 紙箱
● 楽天さん?リクルートさん?TISさん?
● 小さな会社さん多数?
Step 2. Clojureの現在 2/3
- 11. Step 3. とりあえずコードを眺める
Learn X in Y minutes
● 1ページで少量
● 小一時間で雰囲気をつかむことができる
● 眺めるもので、電車の中で読むような感じ
● REPLっぽい。コメント、コード、の連続
● 余裕があれば、マクロ版も。
※ 「X」として多くの言語があるが、REPLに
最適化されたClojureはこの形式が特にあってそう
- 14. ● ビルドツール。で REPL を起動できる
● インストールに時間はかからない
○ 初回の立ち上げでJARを少しだけダウンロード ($HOME/.m2/repository に入
る)
● lein new で、新規プロジェクトの雛形を作れる
○ project.clj とその他のファイルを読むとなんとなく分かる
● 最近は、 boot なるものも
● 写経しながら、慣れた気分になる
Step 5. Leiningen で REPL
$ brew install leiningen
$ lein repl
- 16. 出版されると流行がくる?
● 第3版 (英: 2017/11/25 )
● 第2版 (英: 2012/4 日: 2013/4)
● 第1版 (英: 2009/6 日: 2010/1)
Step 6. 「プログラミング Clojure」を読む 2/2
- 17. ● 変更を保存すると即時評価される。正解なら次の課題に自動で進む
○ はい次、はい次、と行けるので理解できてくる感がある
● koan01から24まで。数時間ぐらい
○ 基本構造、関数、並行プログラミング、マクロまで
● ただ、エラーの内容がコンソールから読み取れない
○ 別ウィンドウで `lein repl` しておいて、コピペで試しながら進めた
http://clojurescriptkoans.com/ は、更にお手軽。内容は大体(全く?)同じ。慣れるま
で基本の反復練習として手を動かすのにいいかもしれない。
Step 7. Clojure Koans を解く
$ git clone git@github.com:functional-koans/clojure-koans.git
$ cd clojure-koans
$ lein koan run
- 18. 時々出てくるLips用語でわからなかった。マクロはわかるけど、リーダー?フォーム?そんなときに発見: Clojure
の基礎 〜マクロ編〜 (athosさん)
理解:
● フォーム … プログラムが読まれる単位。文字列、数値、キーワード、リストなどを指す ref.
● リーダー… テキストをパースし、コンパイラが解釈できるデータ構造を生成する ref.
● リーダーマクロ… 前置きされる特定のマクロ文字によって起動されるリーダーの特殊動作。冗長なリスト
形式の省略形としてつかう。新規登録は不可。「;」「’」「#」など
● マクロ … コードからコードへの変換を定義する関数 ref.
Step 8. 押さえておきたい「リーダー」のあたり
フォーム
リーダー
リーダーマ
クロ
※青字で元資料に追加
- 20. 「Clojure で Web 開発をはじめてみよう — Clojure の日本語ガイド」(by あやぴーさん)を
順を追って見てだいたい雰囲気がつかめる!
● ルーティング、HTMLテンプレート、DBアクセス、バリデーション
● サーバ再起動せずに変更を反映できるREPL上の開発
● 他のライブラリの解説も充実
Step 10. Web開発のイロハ
- 23. ● 最初は慣れない
○ 短い名前の関数とかが読みづらい。ただ、よく使うものは少なそう
○ 手を動かす経験を重ねるのがよさそう。REPL便利
○ Java/Scala辺りの経験はある程度あった方がよさそう
● 既に学ぶリソースは多く存在する
○ 情報にのまれたが少ないよりいい
○ Step 1-10 が少しでも参考になれば
● 理想一辺倒でも実用一辺倒でもないバランス。怖くなさそう
○ 十分な歴史があり、実用に耐えるものは多そう
○ 関数界隈のモナドとかそういう言葉は意外と見かけなかった
○ 勉学の秋にぜひ
まとめ