28
Arachne Unweaved Ikuru K

Arachne Unweaved (JP)

Embed Size (px)

Citation preview

Arachne Unweaved

Ikuru K

自己紹介:

- @サイボウズスタートアップス株式会社

- Clojure Story: https://clojure.org/stories/cstap- Clojure/ClojureScriptでweb開発

- HN: iku000888- https://github.com/iku000888- https://twitter.com/iku000888

アンケート

普段...

- 何らかのJVM言語を使ってる?- Clojureを使ってる?- それ以外のプログラミング言語を使ってる?- プログラミングしない?

アンケート

お仕事...

- いわゆるWeb開発をしている ?- それ以外 ?

Clojure?

- 動的な関数型言語

- Lisp + JVM = 楽しく実践的

- ClojureScriptでブラウザも射程圏内

Arachneのスタート

- 目的:ClojureフルスタックWebフレームワークを作

- 手段:2016年 4/16 Kick Starter- ベースライン:$35,000で3ヶ月フルタイムで取り組

んでアルファ版を作る

- 結果:361 backers, $45,187- https://www.kickstarter.com/projects/1346708779/arachne-rapid-web-development-for-clojure

作者

- Luke VanderHart (https://github.com/levand)- 〜ルーク・ヴァンダーハート

- 普段:Cognitect(Clojureの開発元)でコンサルタント

- Clojure講演多数

- Clojureの本の(共)著者:

- Practical Clojure- ClojureScript: Up and Running- Clojure Cookbook

名前の由来

- 発音:uh-rack-nee- 元ネタ:ギリシャ神話に

登場する編み物の名手

- 「アプリを編み上げる」という思

いを込めた

フルスタックフレームワークの欠如

- Spring/Playに相当するフレームワークが無い

- テンプレートを使う

- ライブラリを組み合わせる

Webアプリケーションに欲しい物

- DI機構

- CIサポート

- 結合テストサポート

- デプロイ自動化

- CDN- I18n- Content Negotiation- and more

- DBコネクション

- ルーティング

- HTMLレンダリング

- アセットパイプライン

- 認証/認可

- バリデーション

- ロギング

- キャッシュ

Webアプリ要素の利用方法(今まで)

ライブラリを組み合わせる

テンプレート

- 柔軟- 自分のコードではない- 作者がコードをメンテする- 手動プロセス- 組み合わせは無限大- アプリケーションを知らない

- 特定のコードを出力する

- コードは全て自分がメンテ

する

- ゴールから離れている程価

値が下がる

フレームワーク

- 良いデフォルトを提供

- 要素を組み合わせる機構を提供

開発プロセス

- 設計レビューを受けている

- 設計書を公開している- https://github.com/arachne-framework/architecture

- 開発プロセスにドッグフーディングを組み込む- http://arachne-framework.org/posts/2017/alpha-release/

現在はalpha版

提供している物

- arachne-core => DIによるオーケストレーション

- プラグイン機構

- デフォルトプラグイン

- プロジェクトジェネレーター

1. 設定からコアデータを管理するDBを構築

JVMClojure

config.clj

Arachne runtime (ns arachne.run)

1. Create DB

2. 設定DBからシステム全体を表すマップを作る

ClojureArachne runtime (ns arachne.run)Runtime Object

Clojure

2. Get

constructors

constructor-a constructor-b constructor-c

3. Crea

te

3. システムマップからアプリケーションを起動

Runtime Object

Start Stop

特徴:設定DBを作るプロセスと、ランタイムを作るプロセスを完全に分離(合せる)

アプリケーション全体の状態を一箇所に集約できる

1. 外部リソース(RDB,API etc)の相互依存関係が見

やすい

2. 外部リソースをモックしやすい→テストしやすい

モジュール機構

- ライブラリ+α- 設定DBに対してCRUDが可能

- 設定用のDSLを提供可

- 他のモジュールに依存可

- 依存する対象を容易に共有できる

デフォルトモジュール

- Arachne HTTP+Arachne Pedestal (App Server)

- Arachne Assets (アセットパイプライン)- Chimera (データ抽象化レイヤー)- 他にも多数

- あくまでデフォルト

Arachne HTTP+Arachne Pedestal

- Webサーバーモジュール

- Pedestal: Cognitectが開発するWebサーバー

- ルーティング

- ミドルウェアで機能拡張

arachne-assets

js-src

css-srcUpload 2 cdn

add-fingerprint

transducer

Chimera

- アプリ視点からデータソースを統一的に扱う

- マイグレーション

- 様々なデータソースをサポート予定

とりあえず動かしたい!

=> Enterprise SPA テンプレート

- https://github.com/arachne-framework/enterprise-spa

Arachnehttp arachne-assets

arachne-cljs

arachne-figwheelArachnePedestal

arachne-core

react

Hello World!

デモ

https://github.com/iku000888/arachne-docs/tree/do-more-stuff

実演する内容

- アクセスカウンタ

まとめ

- Arachneは有力なフレームワークになり得る

- 今後も開発される

- コミュニティはまだこれから

- 一緒に盛りあげていきましょう!

ありがとうございました!