Gradleプラグインユーザーガイド
Android Studioのビルドシステムを説明しているAndroid Tools Project SiteのNew Build Systemを翻訳しました。
1 イントロダクション
1.1 新しいビルドシステムのゴール
新しいビルドシステムのゴールは以下の通りです。
- コードやリソースの再利用を簡単にする
- マルチapkや、アプリケーションの異なるフレーバーなど、一部をカスタムしたアプリケーションの作成を簡単にする
- 簡単な設定、簡単なビルドプロセスのカスタマイズ
- IDEとの統合
(訳注: Google I/O 2013でGradleとの統合環境としてAndroidStudioが発表されました)
2 必須要件
- Gradle 1.6
- SDK with Build Tools 17.0.0 (2013/5/16 リリース)
Maker Faire Bay Area 2013で見たこと感じたこと
Maker Faire Bay Area 2013に参加をしてきましたのでそこで見たものを報告いたします。
まず会場に入って目を奪われたものは3Dプリンターを背負ったおじさんでした。
単に背負っているだけではなく、実際に動作して印刷していました。
そうやって見ていると他にも持ち歩いている方がいらっしゃいました。
特に感心したことは、子供たちがものを実際に触り、時にはワークショップに参加して楽しそうに学んでいることでした。
電子工作だけでなく様々なMakerの方がいました。
和太鼓の叩き方コーナーでは子供たちが元気に叩いていました。
ダンボール作られたサイです。自転車で漕ぐことで歩く動きをしていました。
またこれの小さいものの販売も行われていました。
私が特に興味を惹かれたのは自転車のホイールに取り付けて回転に合わせてLEDを点滅させて絵を表示するもので、日本方が出展されていました。
ラジコンの展示ではヘリコプターが数多く出展されていました。
写真ではわかりにくいかもしれませんが、異様に大きいものがありました。
併せて制御用のマイコンボードが販売されていました。
このマイコンボードはPropellerと呼ばれる32Bit8コアのCPUを持った珍しいボードです。
「DANGER HIGH VOLTAGE」と書かれています。
よく見ると大量のバッテリーが繋がれており注意が必要なようです。
会場にはお店もありました。
流行りの3Dプリンターもあり、実際に買っていく方もいらっしゃいました。
今回、Maker Faire Bay Area 2013に参加して、自分たちも何か創りたいと感じました。
会場では丁度欲しいと思っていた基盤が販売されていましたので購入しました。
会社としてかプライベーターとしてになるかはわかりませんが、これを使って現在考えているアイディアを形にし、まずは日本のMaker Faireに出展したいと思います。
文責:カスタマー開発部 大阪開発課 住友孝郎
Google I/O 2013 気になったもの その2 + 総括
Google I/O 2013 気になったもの その1
Google I/O 2013のSandboxで気になったもです。
Raspberry Pi(ラズベリーパイ) を用いた飛行船
Google+のロゴが入った飛行船が飛んでいました。
飛行船の操作はラジコンのプロポ。
飛行船にはカメラが付いてあり、映像を確認できます。
飛行船の中身。
Raspberry Pi(ラズベリーパイ)にサーモモータとカメラ、通信用にWifiのドングル?といった、基本的なモジュールで作られています。
Androidという観点からVP9を考えてみる
先日GoogleがWebMの次の映像圧縮技術としてVP9を発表しました。
そこでAndroidという観点からVP9がどのように関わってくるか考えてみました。
まずは、メディア・コンテンツというものについて簡単に説明します。
メディア・コンテンツとはどういうものか?
動画を再生させるには映像と音声が必要です。
メディア・コンテンツには映像と音声のデータを持たせるわけですが、むやみやたらに持たせるわけにはいきません。
世界中のどのプレイヤーでも同様にメディア・コンテンツを再生できるよう共通のフォーマット(ルール)にしたがって、
データを持たせる必要があります。
この「音声と映像のデータを持つフォーマット」を「コンテナ・フォーマット」と呼びます。
映像と音声のデータを圧縮する
基本的にメディア・コンテンツは映像と音声のデータはデータ量を小さくして持ちます。
理由は単純です。
メディア・コンテンツのデータ量が大きいととにかく不便だからです。
ネット配信で言えば、データ量が大きければ大きいほど通信量と通信料が増えてしまいます。
そのため、映像や音声のデータは元のキレイさ(正確さ)を大幅に失わない程度にデータを圧縮してあげる必要があります。
世の中にはいろいろな圧縮技術があります。下記に圧縮形式の例を挙げます。
いろいろ固有名詞が出てきますが、「いろいろあるんだ」とだけ思っていただければ大丈夫です。
◆映像圧縮形式
- MPEG4
- H.264/AVC
- VP8
◆音声圧縮形式
- MP3
- AAC
- Voribs
「エンコード」という言葉を聞いた事がありますでしょうか。
「エンコード」がこの圧縮のことです。
逆に圧縮されたデータを元に戻すことを「デコード」と呼びます。
コンテナ・フォーマットの種類
先ほども書きましたが、映像や音声データは共通のフォーマットに従ってもつ必要があり、これをコンテナ・フォーマットと呼びます。
どんなコンテナ・フォーマットがあるか、例を挙げます。
またいろいろ固有名詞が出てきますが、「いろいろあるんだ」とだけ思っていただければ大丈夫です。
◆コンテナ・フォーマットの例
- MP4
- 3GGP
- Matroska
ちなみに、MP4だと次のようなタイプを見かけます。
VP9とは?
ここからの本題のVP9の話に移りますが、まずはVP9の前身であるVP8について書きます。
VP8はGoolge(On2テクノロジーズ)が開発した映像圧縮技術で主にWebMで使用されています。
コンテナ・フォーマット:Matroskaのサブセット
映像形式:VP8
音声形式:Vorbis
そして、このたび発表されたVP9のメリットは何でしょうか?次の3つと考えます。
・ロイヤリティフリー
・オープンソース
・高い圧縮率
ロイヤリティフリー。(ルールを守れば)使いたい放題です。
オープンソース。中身を見放題です。
そしてVP8以上の、他の動画圧縮技術に負けない高い圧縮率を持つとのことです。
「Android」という観点からのVP9
VP9をAndroidという観点から考えてみます。やや突っ込んだ話をします。
現在Android4.2 JellyBeanでは、VP8が公式サポートされています。
Android Supported Media Formats
では、KeyLimePie以降(Android 4.3?)でVP9がサポートされるのか?
個人的には次のことが気になっています。
- どのレベルまで公式サポートとなるのか?
- H.265/HEVCとのシェア争い
どのレベルまで公式サポートとなるのか?
「デコーダー」とは上記に出てきた圧縮されてデータを元に戻すものです。
そして、デコーダーには大きく分けて「ハードウェア・デコーダー」と「ソフトウェア・デコーダー」があります。
動画を再生するにあたり、Androidは高速で処理できるハードウェア・デコーダを優先的に使用します。
もし、再生しようとするメディア・コンテンツをデコードできるハードウェア・デコーダーがない場合、ソフトウェア・デコーダーを使用します。
そのようなことから、最低限ソフトウェア・デコーダーで再生できるメディア・コンテンツを公式サポートとしているように見受けられます。
次に公式サポートのレベルについて考えます。
H.264/AVCは一般的な映像圧縮形式ですが、実は「Baseline Profile」という一番基本的な形式までしか公式サポートとされていません。
これも上記と同じ理由で、ソフトウェア・デコーダーで再生できるのはBaseline Profileまでだからです。
Baseline Profileよりも上位のMain Profileを対応させていない理由は何か?
推測ですが、CPU負荷が大きくAndroid端末によっては思うように再生できない可能性があるため、
制限をかけているではないかと思っています。
Main ProfileはBaseline Profileより高度なことができる反面、どうしても処理が重くなるからです。
VP9はH.264/AVC以上の圧縮率を目指しています。
「高い圧縮率を持つ = デコード時に高い負荷がかかる」ということを意味します。
ソフトウェア・デコーダーでどこまで再生できるのか、どのラインまで公式サポートとなるのか、気になるところです。
H.265/HEVCとのシェア争い
2013年1月H.265/HEVCがITU-Tに承認されました。
H.265/HEVCは、前身のH.264/AVCの倍の圧縮率があると発表されています。
主観的な意見ですが、やはりH.264/AVCのシェアは凄く「次はH.265/HEVCの再生を!」という流れを少し感じています。
VP9がよりシェアを広げるためには、相応の戦略や相当の時間が必要ではないかと思います。
最後に
VP9の「ロイヤリティフリー」「オープン・ソース」はやはり素晴らしいメリットです。
これにより「とりあえずVP9を使ってみよう!」という人は増えると思います。
少しずつ使用者が増えることで、じわじわと浸透していき、磨かれていくことによって、
代表的な映像圧縮技術となる可能性があると思っています。
文責:カスタマー開発部 大阪開発課 中野 大輔
Android Studio Tips and Tricks
Android DevelopersのAndroid Studioに関するtips集を翻訳しました。翻訳の間違い等あるかもしれないので、詳細については元記事を参照して下さい。間違いがあればお知らせ下さい。
元記事:Android Studio Tips and Tricks
Android Studio Tips and Tricks
もしIntelliJ IDEAのインタフェースに不慣れな場合、Android Studioの一般的なタスクの実行方法を不思議に思うかもしれません。このページでは開発に役立つtipsを提供します。
IntelliJ IDEAのインタフェースの完全なドキュメントは(Android StudioはIntelliJ IDEAをベースに作られています)、IntelliJ IDEA documentationを参照して下さい。
Projectの構成
図.1 Gradleのプロジェクト構成
Android Studioで新しいプロジェクトを作る時(あるいはEclipseでのプロジェクトを移行する時)、プロジェクトの構成がいつもと違うという事に気がつくでしょう。図.1を見て下さい、リソースやAndroidManifest.xmlなどプロジェクトのファイルの殆どが"src"ディレクトリの中にあります。
新しいプロジェクトの構成はGradleベースのビルドシステムへの切り替えによるものです。この構成はビルドプロセスをよりフレキシブルにし、複数の種類のビルドを可能にします(※まだ全ての機能は実装されていません)。大体期待通りに動作すると思いますが、一部のファイルは移動したりしています。ほとんどの部分については、"src"ディレクトリ内のファイルだけを変更する事になります。Gradleのプロジェクト構造の詳細については、Gradle Plugin User Guideを参照して下さい。
基本的なオペレーション
以下のトピックはAndroid Studioの基本的な開発タスクについて解説しています。
仮想デバイスの作成
Android Virtual Device Managerの全ての機能にAndroid Studioから直接アクセス出来ます。ツールバー内のAndroid Virtual Device Managerをクリックして起動する事が出来ます。新しい仮想デバイスの作成や起動などを行う事が出来ます。
Installing SDK updates
SDK Managerにもアクセス出来ます。Android toolsやplatforms、ライブラリなどをダウンロード出来ます。ツールバーのSDK Managerから起動する事が出来ます。
新しいファイルの作成
プロジェクト内のディレクトリを選択し、CTRL+N(Macの場合はCMD + N)で素早く新しいコードやリソースファイルを追加する事が出来ます。選択したディレクトリの種類に応じて適切なファイルを選択する事が出来ます。
例えば、"layout"ディレクトリを選択してCTRL + Nをし、「Android resource file」を選択するとダイアログが開き、ファイル名(自動でsuffixに.xmlが付きます)を入力したり、RootとなるViewを設定したりする事が出来ます。作成したファイルを開くとエディタがlayout design editorに自動的に切り替わります。
レイアウトの作成
Android Studioは高度なレイアウトエディタを提供します。XMLをエディットしている間レイアウトのプレビューを表示したり、ウィジェットをドラッグ&ドロップで配置する事が出来ます。テキストでレイアウトXMLを編集している間、ウィンドウの右側のPreviewペインを開いてデバイス上でのレイアウトをプレビューする事が出来ます。Previewペインの上部でプレビューのオプションを変更する事が出来ます。オプションにはデバイスの種類やテーマ、プラットフォームのバージョンなどがあります。複数のデバイスのレイアウトを同時にプレビューするには、デバイス選択のオプションで「Preview All Screen Sizes」を選択して下さい。
レイアウトエディタの下部の「Design」タブを選択するとグラフィカルにレイアウトを編集出来るエディタにスイッチします。Designビューではウィンドウの左側にあるパレットからウィジェットをドラッグ&ドロップする事が出来ます。ウィンドウの右側の「Designer」ペインをクリックして開くと、レイアウトの階層や、レイアウト内のViewのプロパティのリストが表示されます。
Keyboard Commands
以下のテーブルは基本的な処理のショートカットです。
Note: もしMac OS Xを使っているなら、Android Studioの[Preference]-[Keymap]で「Mac OS X 10.5+」に設定して下さい。
(訳注:MacではところどころCTRLの所をCMDにしないといけなかったりするので適宜調整して下さい)
Table 1. Programming key commands
Action | Android Studio Key Command |
---|---|
コマンドのルックアップ | CTRL + SHIFT + A |
クイックフィックス | ALT + ENTER |
コードのリフォーマット | CTRL + ALT + L (Win) OPTION + CMD + L (Mac) |
選択したAPIのdocsを表示する | CTRL + Q (Win) F1 (Mac) |
選択したメソッドのパラメータを表示 | CTRL + P |
メソッドの生成 | ALT + Insert (Win) CMD + N (Mac) |
ソースへのジャンプ | F4 (Win) CMD + down-arrow (Mac) |
行の削除 | CTRL + Y (Win) CMD + Backspace (Mac) |
Search by symbol name | CTRL + ALT + SHIFT + N (Win) OPTION + CMD + O (Mac) |
Table 2. Project and editor key commands
Action | Android Studio Key Command |
---|---|
ビルド | CTRL + F9 (Win) CMD + F9 (Mac) |
ビルド+実行 | SHIFT + F10 (Win) CTRL + R (Mac) |
Projectペインの表示切り替え(表示/非表示) | ALT + 1 (Win) CMD + 1 (Mac) |
タブの移動 | ALT + left-arrow; ALT + right-arrow (Win) CTRL + left-arrow; CTRL + right-arrow (Mac)(訳注:筆者の環境ではCMD+ALT+矢印で移動でした) |
キーマップの完全なガイドについてはIntelliJ IDEA documentationを参照して下さい。
文責:カスタマー開発部 品川開発課 八木 俊広
Google GlassとNexus SとGalaxy Nexusを比較してみた
Android 4.0.4のNexus S、Galaxy Nexusと比較してみました。
ハードウェアは、少し前のスペックとなるが、ブートクラスやプリインストール一覧を見るとソフトウェアはGoogle Glass用に工夫されているようです。
大きく違ったのが、リフレッシュレートです。これの意味するところは、なんでしょうか?
基本情報
項目 | Glass | Nexus S | Galaxy Nexus |
---|---|---|---|
モデル | Glass 1 | Nexus S | Galaxy Nexus |
名前 | glass_1 | soju | yakju |
Build ID | XRR35(android-4.0.4 ???) | IMM76D(android-4.0.4_r1.1) | IMM76D(android-4.0.4_r1.1) |
リフレッシュレート | 308.483 | 56.0 | 59.982 |
VMヒープサイズ | 256MB | 128MB | 256MB |
ハードウェア | omap4430 | herring | tuna |
User Agent
Glass
Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/XRR35) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
画面情報
項目 | Glass | Nexus S | Galaxy Nexus |
---|---|---|---|
スクリーンサイズ | 640×360(HVGAW) | 800×480(WVGA) | 1280×720(HD) |
DPI | 240dpi | 240dpi | 320dpi |
scale | 1.5 | 1.5 | 2.0 |
カーネルバージョン
Glass
Linux version 3.0.31-27816-g639f7a7 (ewol@erikw.mtv.corp.google.com) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Sun May 5 18:41:41 PDT 2013
ブートクラス
Glass
/system/framework/core.jar
/system/framework/core-junit.jar
/system/framework/bouncycastle.jar
/system/framework/ext.jar
/system/framework/framework.jar
/system/framework/glass-framework.jar
/system/framework/glass-services.jar
/system/framework/android.policy.jar
/system/framework/services.jar
/system/framework/apache-xml.jar
/system/framework/filterfw.jar
Storage
Glass
AllowMassStorage=false
Emulated=true
Path=/mnt/sdcard
Removable=false
Nexus S
AllowMassStorage=true
Emulated=false
Path=/mnt/sdcard
Removable=false
Galaxy Nexus
AllowMassStorage=false
Emulated=true
Path=/mnt/sdcard
Removable=false
プリインストール一覧
Glass
Android System
com.android.backupconfirm
Certificate Installer
Package Access Helper
Android keyboard
Key Chain
Package installer
Search Applications Provider
Calendar Storage
Contacts Storage
Download Manager
Media Storage
Settings Storage
User Dictionary
System UI
VpnDialogs
Glass Photo Sphere Viewer
Google Backup Transport
Google Services Framework
Google Account Manager
Network Location
Google Text-to-speech Engine
Glass Bluetooth
Glass Camera
Glass Device Administration
Framework Stubs
com.google.glass.gesture
com.google.glass.hangouts
Glass Home
com.google.glass.logging
Glass Maps
Glass Phone
Glass Settings
Glass Setup
GlassSound
Glass System UI
Glass Update
Nexus S
Android System
com.android.backupconfirm
Bluetooth Share
Calculator
Certificate Installer
Contacts
Package Access Helper
HTML Viewer
Key Chain
Launcher
Microbes Live Wallpaper
Messaging
MusicFX
Music Visualization Wallpapers
Nfc Service
Bubbles
Package installer
Phase Beam
Phone
Search Applications Provider
Calendar Storage
Contacts Storage
Download Manager
Downloads
DRM Protected Content Storage
Media Storage
Settings Storage
Phone/Messaging Storage
User Dictionary
Settings
com.android.sharedstoragebackup
Sound Recorder
System UI
Google Play Store
Voice Dialer
VpnDialogs
Android Live Wallpapers
com.android.wallpaper.holospiral
Live Wallpaper Picker
Google Play Books
News & Weather
Google Voice
Maps
Google+
My Uploads
Google Backup Transport
Browser
Calendar
Camera
Car Home
Clock
Email
Exchange Services
Market Feedback Agent
Gallery
Gmail
Google Search
Google Services Framework
Google Account Manager
Android keyboard
Dictionary Provider
Network Location
TalkBack
Google Play Music
Google One Time Init
Google Partner Setup
Setup Wizard
Street View
Google Bookmarks Sync
Google Contacts Sync
Tags
Talk
Google Text-to-speech Engine
Movie Studio
Google Play Movies
Voice Search
YouTube
Earth
Document Viewer
Galaxy Nexus
Android System
com.android.backupconfirm
Bluetooth Share
Calculator
Certificate Installer
Contacts
Package Access Helper
Face Unlock
HTML Viewer
Key Chain
Launcher
Microbes Live Wallpaper
Messaging
MusicFX
Music Visualization Wallpapers
Nfc Service
Bubbles
Package installer
Phase Beam
Phone
Search Applications Provider
Calendar Storage
Contacts Storage
Download Manager
Downloads
DRM Protected Content Storage
Media Storage
Settings Storage
Phone/Messaging Storage
User Dictionary
Settings
com.android.sharedstoragebackup
Sound Recorder
SIM Toolkit
System UI
Google Play Store
Voice Dialer
VpnDialogs
Android Live Wallpapers
com.android.wallpaper.holospiral
Live Wallpaper Picker
Google Play Books
News & Weather
Maps
Google+
My Uploads
Google Backup Transport
Browser
Calendar
Camera
Clock
Email
Exchange Services
Market Feedback Agent
Gallery
Google Mail
Google Search
Google Services Framework
Google Account Manager
Android keyboard
Dictionary Provider
Network Location
TalkBack
Google Play Music
Google One Time Init
Google Partner Setup
Setup Wizard
Street View
Google Bookmarks Sync
Google Contacts Sync
Tags
Talk
Google Text-to-speech Engine
Movie Studio
Google Play Movies
Voice Search
YouTube
Earth
Document Viewer
DF
Glass
Filesystem | Size | Used | Free | Blksize | |
---|---|---|---|---|---|
/dev | 331M | 32K | 331M | 4096 | |
/mnt/asec | 331M | 0K | 331M | 4096 | |
/mnt/obb | 331M | 0K | 331M | 4096 | |
/system | 1007M | 453M | 554M | 4096 | |
/data | 12G | 477M | 12G | 4096 | |
/cache | 755M | 12M | 743M | 4096 | |
/mnt/sdcard | 12G | 477M | 12G | 4096 |
NexusS
Filesystem | Size | Used | Free | Blksize |
---|---|---|---|---|
/dev | 167M | 32K | 167M | 4096 |
/mnt/asec | 167M | 0K | 167M | 4096 |
/mnt/obb | 167M | 0K | 167M | 4096 |
/cache | 469M | 2M | 467M | 4096 |
/efs | 6M | 5M | 1M | 4096 |
/system | 503M | 273M | 230M | 4096 |
/data | 1007M | 59M | 948M | 4096 |
/mnt/sdcard | 13G | 1M | 13G | 4096 |
GalaxyNexus
Filesystem | Size | Used | Free | Blksize |
---|---|---|---|---|
/dev | 347M | 32K | 347M | 4096 |
/mnt/asec | 347M | 0K | 347M | 4096 |
/mnt/obb | 347M | 0K | 347M | 4096 |
/system | 643M | 307M | 336M | 4096 |
/data | 13G | 201M | 13G | 4096 |
/cache | 425M | 7M | 418M | 4096 |
/factory | 19M | 8M | 11M | 4096 |
/mnt/sdcard | 13G | 201M | 13G | 4096 |
文責:カスタマー開発部 大阪開発課 水谷 哲也