Your SlideShare is downloading. ×
  • Like
clojure on android
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

clojure on android

  • 2,067 views
Published

Explains

Explains

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,067
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
4
Comments
0
Likes
7

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ClojureによるAndroidアプリ開発 2012/4/22 @sawam___
  • 2. Kyoto.cljについて● 目的 ○ Clojureを実用レベルで使えるようにする ■ 業務とか研究とか ○ Clojureを使っている人同士の交流 ○ Clojureに関する情報交換
  • 3. 自己紹介● 修士1年● 普段は主にJavaを使用● Emacs使い● Twitterアカウント ○ sawam___(アンダーバー3つ)
  • 4. 目次● ClojureによるAndroidアプリ開発環境の構築 ○ 環境の準備 ○ 現在の課題点● サンプルコード● ClojureがAndroid上で動くまでの流れ● 参考になりそうな本の紹介
  • 5. 環境の準備 (1/2)1. 作業ディレクトリ作成 ○ mkdir wf ○ cd ./wf2. Githubからnekoを取得 ○ git clone git://github.com/sattvik/neko.git3. Android用clojureを取得してビルド ○ git clone git://github.com/sattvik/clojure.git ○ cd ./clojure ○ mvn package ○ mkdir ../neko/libs ○ mv ./target/clojure-1.4.0-master-SNAPSHOT.jar ../neko/libs/
  • 6. 環境の準備 (2/2)1. Androidのプロジェクトを作成 ○ mkdir sample ○ android create project -p ./sample -t 14-k org.sample -a Main2. Androidプロジェクトを設定 ○ android update project -p . -l ../neko ○ mkdir src/org/sample
  • 7. サンプルアプリ
  • 8. 予備知識:アプリケーションの仕組み Activity OnClickListener SoundRecognition Listenerを登録 onCreate Intentを作成し て投げるToastを表示 認識処理 onClick onActivityResults
  • 9. 予備知識:ClojureでのJavaの扱い方● クラスのメソッドの参照 ○ (. method クラスのインスタンス) ○ (.method クラスのインスタンス)● staticメソッド,フィールドの参照 ○ (クラス名/フィールド) ○ (クラス名/メソッド args)● あるクラスAのサブクラスオブジェクト生成 ○ (proxy [A] [] (method1 (1))) ○ A b = new A() { public int method1() { return 1; } };
  • 10. ソースコード (1/4) ● クラスの生成を宣言 ○ android.app.Activityを継承 ○ 名前空間はorg.sample ○ Mainクラスを生成 ○ インポートの宣言(ns org.sample.Main (:gen-class :main false :extends android.app.Activity :exposes-methods {onCreate superOnCreate onActivityResult superOnActivityResult}) (:import org.zecun.android.R$layout android.widget.Toast android.view.View android.content.Intent))
  • 11. ソースコード (2/4)● レイアウト初期化,クリックリスナ設定(defn -onCreate [this bundle] (.superOnCreate this bundle) (when @set-content-view? (.setContentView this R$layout/main)) (let [button (. this findViewById org.zecun.android.R$id/register_button) that this] (. button setOnClickListener (proxy [android.view.View$OnClickListener] [] (onClick [view] (soundInput that))))))
  • 12. ソースコード (3/4)● 音声認識機能の呼び出し ○ インテントに情報をセット ○ startActivityを呼び出す(defn soundInput [context] (let [intent (new android.content.Intent RecognizerIntent/ACTION_RECOGNIZE_SPEECH ] ) (do (. intent putExtra RecognizerIntent/EXTRA_LANGUAGE_MODEL RecognizerIntent/LANGUAGE_MODEL_FREE_FORM) (. intent putExtra RecognizerIntent/EXTRA_PROMPT "Please say what you want to say.") (. context startActivityForResult intent SoundRecognitionCode))))
  • 13. ソースコード (4/4) ● 結果の受け取り ○ 結果コードをチェック ○ データから認識結果の取り出し ○ トーストに表示(defn -onActivityResult [this requestCode resultCode intentData] (if (and (= requestCode SoundRecognitionCode) (= resultCode android.app.Activity/RESULT_OK)) (.show (Toast/makeText this (. (nth (. intentData getStringArrayListExtra RecognizerIntent/EXTRA_RESULTS) 0) toString) Toast/LENGTH_LONG))) (. this superOnActivityResult requestCode resultCode intentData))
  • 14. 現在の問題点● ビルドに時間がかかる ○ 主にclassをdexに変換するプロセス● 起動時に時間がかかる ○ clojureに関するファイルを全てロードしているから● Replが使えない ○ 調査中
  • 15. Apkが生成されるまでの流れ Main.clj Main.class Main$method1. class app.apk Main$method2. class classes.dex Clojure.jar
  • 16. 参考になりそうな文献やサイト● サイト ○ Google Groups "Clojure" ○ Google Groups "Clojure-Android" ■ Nekoの開発者さんが直接答えてくれる.● 本 ○ "Clojureプログラミング",オーム社 ■ 日本語で書かれた入門者向けの本 ● Clojure 1.2対象... ○ "The Joy of Clojure", Manning Pubns Co. ■ clojureの仕組みまで含めて詳しく説明 ■ Clojure 1.3
  • 17. ご清聴ありがとうございました!バシバシclojure用のアプリを開発してください.