descjop で遊ぼう day 1 : はじめに

ひょんなことからdescjop (Electron + Clojure) Advent Calendar 2015 - Adventarという一人アドベントカレンダーをすることになりました。
経緯などは、上記Adventarのサイト内に記載しています。できる限り続けていきたいと思いますのでどうぞよろしくお願いします。
本日は第1日目です。
descjopの紹介
このアドベントカレンダーをやるにあたり、まずはdescjopというのはなんぞやというところから語っていきたいと思います。
descjopというのは、僕 @kara_dが作っているClojure環境向けのElectronベースのアプリケーションを構築するためのプロジェクトテンプレートです。
現在、GitHubのスター数は148です。もし応援してくれる方がいたらスターしていただけると嬉しいです。
Clojure?、Electron?っていうのを初めて聴いた人もいると思います。
Clojureというのは、designudgeでもなんども触れているのでここでは触れません。バックナンバーなどでいろいろととりあげているので読んでみてください。
Electronとは何か
Electronというのは、GitHubがオープンソースで公開しているプラットフォームで、Windows、OSX、Linuxというクロスプラットフォームなデスクトップアプリケーションが作れる環境です。
Electronは、ChromiumというオープンソースのWebブラウザと、Node.js、そしていくつかのネイティブ用の言語でできています。
これを使うとWebの技術でデスクトップアプリケーションがつくれます。ここで言っているWebの技術というのは、HTML/CSS/JavaScriptを指します。
こういったWeb技術でデスクトップアプリケーションを作成できるツールというのは、過去いろいろありましたし、今もNW.jsやbrackets-shell など、様々なものが存在しています。
descjopはそれなりに歴史があるプロダクトで、まだElectronがElectronと呼ばれる前の時代から地道にアップデートによるバージョンアップを続けてきていて、現在は0.5.2が最新となります。基本的にElectronのバージョンが少し上がると、descjopもアップデートを行い動作確認をしつつ今に至ります。
descjopで出来ること
descjopは、Node.jsをインターフェースとしているElectronに対して、ClojureScriptというClojureベースのJavaScript開発環境を通じてアプリケーションを動作させる方法をとります。この部分については、今後詳しく書いていこうと思いますが、ClojureScriptを通じて開発するものには大きく分けて2つのレイヤーになります。
- HTML/CSSなどをコントロールするフロントエンドアプリケーションとしてのJavaScript
- Electronに対して様々なAPIを通じてアクセスするためにNode.jsアプリケーションとしてのJavaScript
一見ClojureScriptがわかればすぐにつくれそうに思えますが、テンプレートまで行くのにはそれなりに試行錯誤がありました。出来上がったプロジェクトテンプレートはシンプルなものですが、最初の頃は謎のエラーを吐きまくったものです。
ということで、descjopでは、ある程度準備されたElectronアプリケーションのための最低限の土台と設定を提供しています。
descjopのマイルストーン
descjopに関して、あんまり大風呂敷を広げたくないのですが、いくつか決まっていることがあります。リポジトリの説明には下記のようにスタート時から書いてあります。
「A Leiningen template for Web based desktop application with Electron(atom-shell) and others. (now Electron(atom-shell) based only. will build nw.js based later...) 」
つまり、Electron向けのテンプレートというわけではなく、いろいろなランタイム上で動かせるようなものにしていこうという意思(だけは)あります。
ということで、現在予定しているのは以下の通りです。
- nw.js向けのビルドも可能にする
- 開発を楽にしてくれるライブラリの同梱
この先、様々なサンプルなどを公開していこうかなとか考えています
これからクリスマスまでどうぞよろしくお願いします。
無事ゴールを迎えられることを祈って。
Colophon
- 編集長
- Greative GK. 原一浩 ( kara_d )
- 製版システム
- Clojure / Compojure / Ring / Enlive / markdown-clj / Jetty / MySQL
- Share this magazine!
- Follow designudge
- Follow @designudge