Clojureの参考図書(一般)

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 機械学習 自然言語処理技術 推論技術 セマンティックウェブ技術 深層学習技術 強化学習技術 オンライン学習 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 プログラミング スパースモデリング 確率的生成モデル サポートベクトルマシン Clojure 本ブログのナビ

Clojureについて

Clojureは、Rich Hickeyにより作られ2007年に登場した比較的新しい言語である。新しいとは言っても、言語自体は1958年に登場したLISP言語の方言の一つであり、またJVMの上で動作してレガシーなプログラミング言語であるJAVAのコードをそのまま利用できるという古い顔と新しい顔を併せ持つ言語となっている。

Clojureの特徴の一つとして関数型言語であるというものがある。これはpythonやjavascript等の通常の言語が手続きを書き並べていく言語であるのに対して、関数という機能ブロックで全てのプログラムを構成するというプログラミング言語の歴史の中では最新のトレンドに部類されるものとなる。

プログラミング言語の開発の視点の一つに再利用性の向上がある。関数型言語の前に一世を風靡したオブジェクト指向型言語もそのような観点で開発されたものだが、関数というブロックで構成するというアイデアは更なる再利用性の向上を実現している。

また、REPLと呼ばれるコードを書きながらその都度関数を評価していくしくみは、作成時のバグを低減し、コード生成の効率化をもたらす。更に、LISPの持つ「データ=コード」という特徴は、プログラムの自動生成を含めた人工知能技術を実現する可能性を持つ。

ここでは国内外で出版されているClojureの参考図書についてまとめた。 機械学習の参考図書に関しては別途まとめる。

Clojureの参考図書(一般)

まず「おいしいClojure入門」、少し古い(2013)情報で一部のライブラリは使えないものもあるが、使うという観点で、ウェブから機械学習、音声・画像処理、andoroidかIOT等非常に広範囲な領域についてのサンプルコードが記載されておりプログラミングの楽しみを味合わせてくれると共に、関数型プログラミングの容易さ(ほとんど文法は覚えなくて良い)を感じされてる図書となっている。以下に項目の抜粋を述べる。

「おいしいClojure入門」

第1章 Clojur環境の作り方と始め方
道に迷った時は
依存関係を見る
Eclipseで一仕事
セッションにライブラリをダイナミックに追加する
Javaのコードを走らせるっていうのは、ここだけの話
もう一つのRuby JRuby
第2章 数行のコードで毎日の仕事が楽になるClojure
今日からできるClojure
非同期でhttpサーバーとクライアントを接続する
統計するならIncanter
ドキュメントならMrginalia
簡単素敵なグラフ
Seasawでユーザーインターフェース
docjureで表計算
Postalでスパムマスター
お知らせするならGrowl
通知アプリケーション
ターミナルを使ってユーザーと対話する
ツリアルポート使ってる?
PCのUSBポートへのアクセスを実現する
巨大なXMLファイルを処理するパーサー
Clojureで自然言語処理
Conduitでストリームプロセッシング全開
Aliceが暗号化すればBobも安心
ニューラルネットワークにはNetz
Overtoneから派生
非常にシビアなタイミングをサポート
スケジューリングして、スケジュールの開始/停止を設定
javaでよく使われているLexer(字句解析器)とParser(構文解析器)
ネットワーク越しに他の言語と通信できる
Luceneに繋げる
Solrベースの検索エンジンとつなぐ
PDFにしたい時は
Esperを使って複雑なイベントを処理する
大量のメッセージやイベントを処理する必要のあるアプリケーションの開発を容易にする
イベントのフィルタリングと解析を行い、リアルタイムに応答
1秒間に20万個のイベントの処理が可能
Esper
ドメイン特化言語(DSL)
パーサーを作る
第3章 開発心が沸き立つClojure
フラクタル
手続き型イメージ生成ライブラリ
用途
ゲーム用に2D素材の質感生成
フラクタルイメージ/アートワークの作成
レイトレーシングの3D/4D質感生成
パターン生成(マップのランダム生成等)
遺伝的アルゴリズム Gajure
論理プログラミング Prologはどこへ行った?
ルールエンジンが熱い
組み込みデータベース Cupboard
データベースの変更管理とマイグレーションを提供
動画の変換が必要な時に利用する
テストする
GUIベースのブラウザをClojureから操作
第4章 Clojureでお手軽、チョー楽しいWeb開発
Lord of the Ring Web開発の最強パートナー
ringの世界
compojureによるHTTPルーティング
セキュリティ関連
webテンプレート
RESTfulなアプリケーションは今や当たり前
第5章 メッセージのベストプラクティス
JMS、AMQP、 RabbitMQ用ツールキット Clamq
Active MQとの接続
Cli-camel
スケジューリングが必要な時はQuartz
タスクスケジュール
ClojureのRedis
ZookeeperとAvoutでアプリケーションの状態を配信する
memcached
Spyglass
Apache Casandra
Clojureで使いやすいHBase
Cascalogを使って、ClojureからHadoopにクエリ
Storm Clojureから利用可能なリアルタイム分散システム
第6章 クラウドとClojureの明るい日々
5分でHerokuにデプロイする
SSHでのアクセスを準備する
アプリケーションをGoogle App Engineにアタッチする
クラウドでぷロイメントを提供するPassサービス
Amazon Web ServiceでBeanstalkかClojure
Clojureでのシステムモニタリング
パラレルSSH
同時に複数のサーバーに対して、同じシェルコマンドを実行できる
一回で複数のマシンのディスクの空き容量を確認
シンプルなモニタリング
ClojureからAmazon EC2のインスタンスを直接モニタする
仮想PCの利用
インフラをコードで書く
第7章 サウンドもClojureでコントロール
スピーチでClojure、音声認識でClojure
Clojure で話す
音楽をライブするなら
野獣とライブ
第8章 Clojureでグラフィクス
Processing Clojureに移植された最高のビジュアルツール
OpenCVと画像処理
第9章 Androidアプリ開発で稼いでみませんか!
SDKのインストール
Androidプロジェクトを作成して動かす
第10章 今日はArduinoで組み込みプログラミング
Clodiuno AndroidのClojure
ブレットボードの使い方
第11章 Clojureでゲーム開発!
お猿さんも喜ぶ、Clojureでゲーム
次のゲームはどこに?
第12章 プラットフォーム
Ruby+Clojure=Rouge
ClojureCLR(.NETでClojure)
ClojureScript(ClojureをJavaScriptにコンパイル)

一通りプログラムが書けるようになったところで、実用を考える際に必要なサンプルコードが記載されている参考図書。

「Clojure Recipes」

1. Starting Your Project with Leiningen
1. Leiningenでプロジェクトを始める
2. Packaging Clojure for a Java EE Enviroment
2. Java EE環境でのClojureのパッケージ化
3. Creating a REST Server in Compojure
3. CompojureでのRESTサーバの作成
4. Creating a REST Server with Liberator
4. LiberatorによるRESTサーバーの作成
5. A REST Client in Clojurescript
5. ClojurescriptによるRESTクライアントの作成
6. A Simple JSON Server
6. シンプルなJSONサーバー
7. A Simple Server Using the Pedestal Framework
7. Pedestalフレームワークを使ったシンプルなサーバ
8. A Stock Ticker on the Pedestal Framework Server
8. Pedestal Frameworkサーバー上の株式ティッカー
9. Simplifying Logging with a Macro
9. ロギングをマクロで簡単にする
10.Extending the Compiler with a Macro
10.マクロを使ったコンパイラの拡張
11. Simplifying Datomic Syntax by Writing a DSL
11. DSLを書いてDatomic構文を簡略化する
12. Reading the SASS DSL and Generating CSS with Clojure Zippers
12. SASS DSLを読んでClojure ZippersでCSSを生成する
13. Introduction to Cascalog
13. カスカログ入門
14. Catalog and Hadoop
14. カタログとHadoop
15. Loading a Data File into Cascalog
15. カスカログへのデータファイルの読み込み
16. Writing Out a Data File with Cascalog
16. Cascalog によるデータファイルの書き出し
17. Cascalog and Structured Data
17. カスカログと構造化データ
18. Loading Custom Data Formats into Cascalog
18. Cascalog へのカスタムデータ形式の読み込み
19. Connecting to Datomic from Your Application
19. アプリケーションから Datomic への接続
20. Getting Started with Storm
20. Storm を始める
21. Getting Started with JMS in Clojure
21. ClojureでJMSを始めよう
22. Integrating Storm and JMS
22. StormとJMSの統合
23. CSV Reader
23. CSVリーダー
24. Detecting Errors with a Log Monitoring Application
24. ログ監視アプリケーションでエラーを検出する
25. Bundling Clojure as Ant Plug-in
25. ClojureをAntのプラグインとしてバンドルする
26. Bundling Clojure as a Maven Plug-in
26. MavenプラグインとしてのClojureの束ね方
27. Integrating Clojure by Scripting Web Tests
27. WebテストをスクリプトすることによるClojureの統合
28. Monitoring Availability with a Website
28. Webサイトによる可用性の監視

発行されている参考図書の中で最新のもの。

「The Clojure Workshop」

Chapter 1: Hello REPL!
第1章:Hello REPL!
Chapter 2: Data Types and Immutability
第2章:データ型と不変性
Chapter 3: Functions in Depth
第3章:関数の詳細
Chapter 4: Mapping and Filtering
第4章:マッピングとフィルタリング
Chapter 5: Many to One: Reducing
第5章:多対一:レデューシング
Chapter 6: Recursion and Looping
第6章:再帰とルーピング
Chapter 7: Recursion II: Lazy Sequences
第7章:再帰II: 遅延シーケンス
Chapter 8: Namespaces, Libraries and Leiningen
第8章:名前空間、ライブラリ、レイニンゲン
Chapter 9: Host Platform Interoperability with Java and JavaScript
第9章:JavaとJavaScriptによるホストプラットフォームの相互運用性
Chapter 10: Testing
第10章:テスト
Chapter 11: Macros
第11章:マクロ
Chapter 12: Concurrency
第12章: 並行処理
Chapter 13: Database Interaction and the Application Layer
第13章:データベースとの連携とアプリケーション層
Chapter 14: HTTP with Ring
第14章:リングによるHTTP
Chapter 15: The Frontend: A ClojureScript UI
第15章:フロントエンド。ClojureScriptによるUI
Summary
Appendix

教科書的な情報よりは、より実用的な実装の観点でまとめられたもの。

「PROFESSIONAL CLOJURE」

CHAPTER 1: HAVE A BEGINNER’S MIND
第1章: ビギナーズマインドを持つ 
CHAPTER 2: RAPID FEEDBACK CYCLES WITH CLOJURE
第2章 Clojureによる迅速なフィードバックサイクル 
CHAPTER 3: WEB SERVICES
第3章:ウェブサービス 
CHAPTER 4: TESTING
第4章:テスト 
CHAPTER 5: REACTIVE WEB PAGES IN CLOJURESCRIPT
第5章 Clojurescriptで作るリアクティブなWebページ 
CHAPTER 6: THE DATOMIC DATABASE
第6章:デートミック・データベース 
CHAPTER 7: PERFORMANCE
第7章:パフォーマンス 
What Is Performance?
パフォーマンスとは何か?
Summary
まとめ

「Clojure Programming Cookbook」

Chapter 1 : Live Programming with Clojure
第1章: Clojureによるライブプログラミング
Chapter 2 : Interacting with Collections
第2章:コレクションとの付き合い方
Chapter 3 : Clojure Next
第3章:Clojure Next
Chapter 4 : File Acmes and Network
第4章:ファイルエイムとネットワーク
Chapter 5 : Working with Other Lan
第5章:他のLanとの連携
Chapter 6 : Concurrency and Parallelism
第6章:同時実行と並列処理
Chapter 7 : Advanced Tips
第7章 応用編
Chapter 8 : Web Applications
第8章:Webアプリケーション
Chapter 9 : Testing
第9章:テスト
Chapter 10 : Deployment and DevOps
第10章:デプロイメントとDevOps

教科書的な参考図書。

「Living Clojure」

I. A Guided Tour of Clojure
I. Clojureのガイドツアー
 1. The Structure of Clojure
 1. Clojureの構造
 2. Flow and Functional Transformations
 2. フローと関数型変換
 3. State and Concurrency
 3. 状態と並行性
 4. Java Interop and Polymorphism
 4. Javaの相互運用とポリモーフィズム
 5. How to Use Clojure Projects and Libraries
 5. Clojureプロジェクトとライブラリの使い方
 6. Communication with core.async
 6. core.asyncとのコミュニケーション
 7. Creating Web Applications with Clojure
 7. ClojureでWebアプリケーションを作る
 8. The Power of Macros
 8. マクロの威力
II. Living Clojure Training Program
II. リビングClojureトレーニングプログラム
 9. Joining the Clojure Community
 9. Clojureコミュニティへの参加
 10. Weekly Living Clojure Training Plan
 10. 週間リビングClojureトレーニングプラン
 11. Further Adventures
 11. さらなる冒険

core.async等非同期プログラミングに特化した参考図書。

「Hands-on Reactive Programming with Clojure」

Chapter 1: What is Reactive Programming?
第1章:リアクティブプログラミングとは?
Chapter 2: A Look at Reactive Extensions
第2章 リアクティブ・エクステンションの紹介 
Chapter 3: Asynchronous Programming and Networking
第3章:非同期プログラミングとネットワーク 
Chapter 4: Introduction to core.async
第4章:core.asyncの紹介 
Chapter 5: Creating Your Own CES Framework with core.async
第5章:core.asyncで独自のCESフレームワークを作る 
Chapter 6: Building a Simple ClojureScript Game with Reagi
第6章 ReagiでシンプルなClojureScriptゲームを作る 
Chapter 7: The UI as a Function
第7章 関数としてのUI 
Chapter 8: A New Approach to Futures
第8章 先物への新しいアプローチ 
Chapter 9: A Reactive API to Amazon Web Services
第9章:Amazon Web ServicesへのリアクティブなAPI 
Chapter 10: Reactive Microservices
第10章:リアクティブなマイクロサービス 
Chapter 11: Testing Reactive Apps
第11章:リアクティブアプリのテスト
Chapter 12: Concurrency Utilities in Clojure
第12章:Clojureのコンカレンシーユーティリティー

webサービスの中でもマイクロサービスに特化した参考図書。

「Microservice with Clojure」

Chapter 1 : Monolithic Versus Microservice
第1章: モノリシックとマイクロサービスの違い 
Chapter 2 : Microservice Architecture
第2章:マイクロサービスアーキテクチャ
Cahpre 3 : Microservice for Helping Hands Application
第3章:マイクロサービスを使ったHelping Handsアプリケーション 
Chapter 4 : Development Enviroment
第4章:開発環境 
Chapter 5 : REST APIs for Microservices
第5章:マイクロサービスのためのREST API 
Chapter 6 : Introduction to Pedestal
第6章:Pedestalの紹介 
Chapter 7 : Achieving Imuutability with Datomic
第7章 : Datomicによるイミュータビリティの実現
Chapter 8 : Building Microservices for Helping Hands
第8章:マイクロサービスの構築方法 
Chapter 9 : Configuring Microservices
第9章 : マイクロサービスの設定 
Chapter 10 : Event-Driven Patterns for Microservices
第10章:マイクロサービスのイベント駆動型パターン 
Chapter 11 : Deploying and Monitoring Secured Microservices
第11章 : セキュリティで保護されたマイクロサービスのデプロイと監視

「Clojure Hight Performance Programming」

Chapter 1: Performance by Design
第1章:パフォーマンス・バイ・デザイン 
Chapter 2: Clojure Abstractions
第2章:Clojureの抽象化 
Chapter 3: Leaning on Java
第3章:Javaに寄り添う 
Chapter 4: Host Performance
第4章:ホストのパフォーマンス 
Chapter 5: Concurrency
第5章:コンカレンシー 
Chapter 6: Measuring Performance
第6章:パフォーマンスの測定 
Chapter 7: Performance Optimization
第7章:パフォーマンスの最適化 
Chapter 8: Application Performance
第8章:アプリケーションのパフォーマンス

コメント

  1. […] Clojure全般の参考図書 […]

タイトルとURLをコピーしました