BT

Clojureを使ったネイティブAndroidアプリ構築

| 作者: Sergio De Simone フォローする 12 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2015年9月9日. 推定読書時間: 2 分 |

原文(投稿日:2015/08/26)へのリンク

この数年で、AndroidプラットフォームでのClojureによる開発がかなり進展している。開発者はSwiftKeyのClarity Keyboardのような一人前のアプリでClojureが使えるようになった。ここでは、AndroidプラットフォームでClojureをサポートするツールの現状についてレビューする。

これまで、AndroidにおけるClojureはその遅い起動に苦しんできた。標準のClojureを使った場合、Javaよりも4–10倍も長くなるおそれがあった。この問題はClojureのforkであるSkummetによって解決されている。SkummetはClojureのコンパイラを最適化し、よりコンパクトでより高速にロードできるバイトコードを生成する。コンパイラの最適化に加えて、最適化されたClojureのライタイムも含まれている。

Skummetは互換性を最大限保証することを目標にしている。ただし、Varsを直接参照しているコードで問題になる可能性がある。Skummetの作者であるAlex Yakushev氏によると、たいていのClojureコードはそのままで互換性があるはずだという。

全体として、Skummetは単純なベンチマークアプリの初回起動において、ロード時間を4倍削減でき、APKサイズとヒープ使用量を2倍シュリンクできる。SwiftKeyのAdam Clements氏とBen Leavett氏によると、Skummetを使うことによって、Clarity Keyboardのロード時間を約1.5–2秒に保つことができ、さらなる改善も可能だという。

AndroidにおけるClojure開発に役立つ他のツールは、Clojure-Android Initiativeのプロジェクトにまとめられている。

  • lein-droid: Clojure-Androidプロジェクトのビルドツールとして機能し、リソースのパッケージング、APKファイルの作成、その署名などの処理を行うLeiningenプラグイン。
  • Neko: AndroidのJava APIの一部をラップして、Clojureからもっと使いやすくするツールキット。

Android用のNightwebアプリの作者であるZach Oakes氏は、こう言っている。Clojureは無愛想なイディオムを可能にすることで、アプリのコードベースを「びっくりするほど」小さくすることができ、プログラマが非同期タスクを実行しやすくすることで、アプリの反応性を改善することができる。

SwiftKeyのエンジニアらによると、Androidアプリの構築にClojureを使うことは、アプリの設計に大きな影響を与えるという。具体的には、Clarity Keyboardの場合、完全に「イベント駆動」な設計を採用することができ、イミュータブルなデータ構造の利用と相まって、ユーザアクションを簡単に格納して「再生」できるようになったという。またイミュータブルなデータは、モジュール度合いの高いアプリを構築し、すべての動作をデフォルトで非同期にするのにも役立ったという。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT