SlideShare a Scribd company logo
Android + Perl Naoya Ito, GREE 2010.09.30 Shibuya.pm
 
Scripting Layer for Android (SL4A) Android デバイス上で  jRuby, Lua,  Perl , Python, PHP, shell  などを編集 / 実行できるアプリ 名前が最近  ASE -> SL4A  に変更になってるので注意 http://code.google.com/p/android-scripting/ スクリプトからは  API  で  Android  の機能を呼べる "AndroidFacade API"
SL4A Android API use Android my $android =     Android->new; $android-> makeToast (    "Hello, Android!" );
Android.pm  の中身 makeToast()  などは  AUTLOAD makeToast() -> localhost  に  JSON-RPC 多分  SL4A  アプリが受け皿になっている
SL4A で開発 Android SDK (Eclipse) Terminal.app Emacs
インストール  (Terminal.app) % adb –e install sl4a_r2.apk % adb –e install perl_for_android_r1.apk  Settings > Applications > Unknown sources  を有効にしておきます adb install  したあと起動してちょこちょこと設定します ブラウザから直接  apk DL  しても  ok  だと思います
SL4A  のエディタで実装 できる、でもこれは辛い !
Emacs  で書いて  adb push % adb push hello_naoya.pl  /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで  SL4A  側のスクリプト一覧に  hello_naoya.pl  が追加される
Perl  モジュール 幾つか組み込みで入っている CPAN モジュール  etc  は  Pure Perl  なら  adb push  で  /sdcard  の  site_perl  ディレクトリに置けば動く ( と思います )
同梱モジュールを調べる % adb shell # ls /data/data/com.googlecode.perlforandroid/files/perl/5.10.0 auto warnings warnings.pm utf8_heavy.pl utf8.pm vars.pm IO Fcntl.pm ... # ls /sdcard/com.googlecode.perlforandroid/extras/perl/site_perl
ネタ発見 # ls IO Handle.pm Dir.pm Poll.pm Socket.pm  ←  これ Socket Select.pm
echo  サーバーを書いてみよう use IO::Socket; use Android; my $android = Android->new; my $server = IO::Socket::INET->new( Listen  => 20, LocalPort => 9999, Reuse  => 1, ) or die $!; while (1) { my $client = $server->accept; while ($client->sysread(my $buf, 1024)) { $android->makeToast("echo: " . $buf); } $client->close; } $server->close;
あっさり動いた % adb shell # ps ... app_25  423  30  131160 22372 ffffffff afe0d4a4 S com.googlecode.android_scripting app_25  474  423  4396  3736  c01c54a0 afe0ceac S /data/data/com.googlecode.perlforandroid/files/perl/ perl ...
さて、動作確認 ... telnet  で動作確認・・・あれ、 telnet  がない
echo  クライアントも必要だ #!perl  use strict; use warnings; use IO::Socket; my $cli = IO::Socket::INET->new( PeerAddr => 'localhost', PeerPort => 9999, Proto  => 'tcp', ) or die $!; $cli->syswrite("Anybody home?"); $cli->close;
 
ほか 実は外部アクセス可能な  Public  サーバーにもできる http://handasse.blogspot.com/2010/09/pythonandroid5.html (Python  で 5 分で遠隔カメラサーバに ) $droid->smsSend()  や  $droid->vibrate()  と組合わせると夢がひろがりんぐ perl  で  WebView  を起動して  JavaScript  の  callback  を  kick  するとか面白いことも droid.registerCallback("event_name", function() {...});
まとめ SL4A  で  Perl  で  Android Quick Hack API  で結構いろいろできるようです Clipboard, Camera, BatteryManager, Phone, viewHTML, viewMap … 比較的あっさり動きます Hack  次第で色々楽しめそう SL4A for  PHP   もあります
大事なことなので繰り返します SL4A for  PHP   もあります 【未承諾広告】グリーは iPhone/Android エンジニアも絶賛募集中
おしまい

More Related Content

PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
PPT
Titanium Mobile
PPT
about Thrift
PPT
081108huge_data.ppt
PDF
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
PDF
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
PPTX
Perl logging
PPTX
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Titanium Mobile
about Thrift
081108huge_data.ppt
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Perl logging
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう

What's hot (20)

PDF
AWS SDK for Smalltalk
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
PDF
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
PPT
Scala on Hadoop
PDF
CodeIgniter入門
PDF
Zabbix API
PDF
How Smalltalker Works
PDF
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
PPT
CGI::Application::Dispatch
KEY
Mojoliciousをウェブ制作現場で使ってみてる
PPT
CPANの依存モジュールをもう少し正しく検出したい
PDF
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
PPTX
実用裏方 Perl 入門
PPTX
CMSとPerlで遊ぼう
PDF
Using Dancer
PPT
Using Windows Azure
PDF
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
PPTX
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
PDF
成長を加速する minne の技術基盤戦略
AWS SDK for Smalltalk
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
15分でCakePHPを始める方法(Nseg 2013-11-09 )
Scala on Hadoop
CodeIgniter入門
Zabbix API
How Smalltalker Works
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
CGI::Application::Dispatch
Mojoliciousをウェブ制作現場で使ってみてる
CPANの依存モジュールをもう少し正しく検出したい
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
実用裏方 Perl 入門
CMSとPerlで遊ぼう
Using Dancer
Using Windows Azure
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
成長を加速する minne の技術基盤戦略
Ad

Similar to Scripting Layer for Android + Perl (20)

PPT
サーバー実装いろいろ
PDF
Kyotopm発表資料20130330
PDF
密着!わたしのコンソールアプリ開発環境
PPT
関西オープンソース 2008 30days Albumの裏側
PDF
Niigata.pm #1
PDF
PaaSの作り方 Sqaleの場合
PDF
20120423 hbase勉強会
PDF
PSGIへの誘い
KEY
20年越しで Perl 4 to 5 した話
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
PDF
最近遊んだLinuxボードたち
 
PDF
about Perl5.10
PDF
OpenStack + Common Lisp
PDF
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
PPT
第55回PHP勉強会
PDF
Backlogでの Perlのつかいかた
KEY
Perlで伝統芸能
PDF
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
ODP
How to use GPL software in closed source Android application
PPT
LL matsuri 2013-0824
サーバー実装いろいろ
Kyotopm発表資料20130330
密着!わたしのコンソールアプリ開発環境
関西オープンソース 2008 30days Albumの裏側
Niigata.pm #1
PaaSの作り方 Sqaleの場合
20120423 hbase勉強会
PSGIへの誘い
20年越しで Perl 4 to 5 した話
ホームディレクトリに埋もれた便利なコードをさがせ!
最近遊んだLinuxボードたち
 
about Perl5.10
OpenStack + Common Lisp
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
第55回PHP勉強会
Backlogでの Perlのつかいかた
Perlで伝統芸能
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
How to use GPL software in closed source Android application
LL matsuri 2013-0824
Ad

More from Naoya Ito (10)

PPT
Web-Gakkai Symposium 2010
PPT
はてなブックマークのシステムについて
PPT
Perlで圧縮
PPT
Introduction to Algorithms#24 Shortest-Paths Problem
PPT
090518computing Huffman Code Length
PPT
スペルミス修正プログラムを作ろう
PPT
Dijkstra Algorithm
PPT
OGC2009 はてなブックマークについて
PPT
How to read linux kernel
PPT
Introduction To Moco
Web-Gakkai Symposium 2010
はてなブックマークのシステムについて
Perlで圧縮
Introduction to Algorithms#24 Shortest-Paths Problem
090518computing Huffman Code Length
スペルミス修正プログラムを作ろう
Dijkstra Algorithm
OGC2009 はてなブックマークについて
How to read linux kernel
Introduction To Moco

Scripting Layer for Android + Perl

  • 1. Android + Perl Naoya Ito, GREE 2010.09.30 Shibuya.pm
  • 2.  
  • 3. Scripting Layer for Android (SL4A) Android デバイス上で jRuby, Lua, Perl , Python, PHP, shell などを編集 / 実行できるアプリ 名前が最近 ASE -> SL4A に変更になってるので注意 http://code.google.com/p/android-scripting/ スクリプトからは API で Android の機能を呼べる "AndroidFacade API"
  • 4. SL4A Android API use Android my $android =    Android->new; $android-> makeToast (    "Hello, Android!" );
  • 5. Android.pm の中身 makeToast() などは AUTLOAD makeToast() -> localhost に JSON-RPC 多分 SL4A アプリが受け皿になっている
  • 6. SL4A で開発 Android SDK (Eclipse) Terminal.app Emacs
  • 7. インストール (Terminal.app) % adb –e install sl4a_r2.apk % adb –e install perl_for_android_r1.apk Settings > Applications > Unknown sources を有効にしておきます adb install したあと起動してちょこちょこと設定します ブラウザから直接 apk DL しても ok だと思います
  • 8. SL4A のエディタで実装 できる、でもこれは辛い !
  • 9. Emacs で書いて adb push % adb push hello_naoya.pl /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで SL4A 側のスクリプト一覧に hello_naoya.pl が追加される
  • 10. Perl モジュール 幾つか組み込みで入っている CPAN モジュール etc は Pure Perl なら adb push で /sdcard の site_perl ディレクトリに置けば動く ( と思います )
  • 11. 同梱モジュールを調べる % adb shell # ls /data/data/com.googlecode.perlforandroid/files/perl/5.10.0 auto warnings warnings.pm utf8_heavy.pl utf8.pm vars.pm IO Fcntl.pm ... # ls /sdcard/com.googlecode.perlforandroid/extras/perl/site_perl
  • 12. ネタ発見 # ls IO Handle.pm Dir.pm Poll.pm Socket.pm ← これ Socket Select.pm
  • 13. echo サーバーを書いてみよう use IO::Socket; use Android; my $android = Android->new; my $server = IO::Socket::INET->new( Listen => 20, LocalPort => 9999, Reuse => 1, ) or die $!; while (1) { my $client = $server->accept; while ($client->sysread(my $buf, 1024)) { $android->makeToast("echo: " . $buf); } $client->close; } $server->close;
  • 14. あっさり動いた % adb shell # ps ... app_25 423 30 131160 22372 ffffffff afe0d4a4 S com.googlecode.android_scripting app_25 474 423 4396 3736 c01c54a0 afe0ceac S /data/data/com.googlecode.perlforandroid/files/perl/ perl ...
  • 15. さて、動作確認 ... telnet で動作確認・・・あれ、 telnet がない
  • 16. echo クライアントも必要だ #!perl use strict; use warnings; use IO::Socket; my $cli = IO::Socket::INET->new( PeerAddr => 'localhost', PeerPort => 9999, Proto => 'tcp', ) or die $!; $cli->syswrite("Anybody home?"); $cli->close;
  • 17.  
  • 18. ほか 実は外部アクセス可能な Public サーバーにもできる http://handasse.blogspot.com/2010/09/pythonandroid5.html (Python で 5 分で遠隔カメラサーバに ) $droid->smsSend() や $droid->vibrate() と組合わせると夢がひろがりんぐ perl で WebView を起動して JavaScript の callback を kick するとか面白いことも droid.registerCallback("event_name", function() {...});
  • 19. まとめ SL4A で Perl で Android Quick Hack API で結構いろいろできるようです Clipboard, Camera, BatteryManager, Phone, viewHTML, viewMap … 比較的あっさり動きます Hack 次第で色々楽しめそう SL4A for PHP もあります
  • 20. 大事なことなので繰り返します SL4A for PHP もあります 【未承諾広告】グリーは iPhone/Android エンジニアも絶賛募集中