BT

Androidネイティブ開発に関するGo言語の状況

作者: Sergio De Simone , 翻訳者 笹井 崇司 投稿日 2014年7月7日 |

原文(投稿日:2014/06/27)へのリンク

GoでAndroidネイティブアプリを書けるようにしようと、Googleのエンジニアと独立系開発者たちから、いくつかの異なる提案がなされている。これはGoアプリがAndroid NDKにフルアクセスするのを許すものではなく、そのサブセットへのアクセスを許すものになるだろう。

Androidアプリのために部分的なGoサポートを追加する提案を書いた、GoogleのエンジニアであるDavid Crawshaw氏はこう言っている。「AndroidプラットフォームにGo相当のものを提供するのは困難です。プラットフォームはJavaで書かれており、そのAPI界面は巨大です。」

だが、Crawshaw氏は言う。Androidアプリの一部はAndroid NDKが提供するCベースのずっと小さなAPIに対して書かれています。それはゲームです。NDKにあるのと等価な機能を提供するようなAndroidのGoサポートがふさわしいでしょう。

Crawshaw氏は、Go 1.4のサイクルで、GoリポジトリにGOOS=androidオプションのサポートを導入することを提案している。これには以下が含まれる。

  • Android NDK経由でエクスポートされてるようなOpenGL、OpenSL、OpenMAXバインディング。
  • Java -> Go言語バインディングジェネレータ。Goパッケージを与えると、Javaコードにそれを呼び出させて、標準SDKでゲームメニューUIを構築できる。
  • Android Studioビルドシステム統合

AndroidにGoを導入する提案をしているのは、Crawshaw氏だけではない。Elias Naur氏はGoツールチェインを拡張して、共有ライブラリの生成をサポートするよう提案している。これは.apkファイルで配布されるよう、Androidアプリにロードされて実行されるGoライブラリを使ったAndroidアプリの作成を可能にするものだ。これを実現するための重要要件は、クロスコンパイルのサポート追加により、Go 1.3ですでに見たされている。クロスコンパイルが必要なのは、NDKはAndroidそのものの上で動くわけではないためだ。コンパイルおよび/またはAndroid NDKとリンクされた実行ファイルや共有ライブラリだけが、Androidデバイスで動くことが保証されている。

後者の提案はElias Naur氏による既存のオープンソースプロジェクト、goandroidをベースとしている。GoandroidはGoツールとランタイムにパッチを当てて、Androidネイティブアプリで動かせる共有ライブラリの生成を可能にするが、これはGoogleによって公式にサポートされていない。

最後に、AndroidネイティブアプリをGoで書けるようにする、もっと包括的なフレームワークMandalaがある。MandalaはGoandroidツールチェインを利用する。その作者であるAndrea Fazzi氏によると、Mandalaのおかげで「あなたはアプリをデスクトップで開発、テスト、実行でき、それをAndroidにデプロイできます。これはAndroidアプリをGoで書くのにGoの構文を使うことを促します。コミュニケーションはコールバックではなくチャネルを通して行います。」

Mandalaは機能の点でCrawshaw氏の提案に近く、主にゲームのためのソリューションを提供することを目的としている。「フレームワークはハイレベルのゲームエンジンとしてではなく、基本レイヤーとして見なすべきです。その上にゲームエンジンを構築したり、既存のゲームエンジンを使うのです。」 彼は、GoogleはGoを使ったAndroidネイティブ開発をサポートしないと警告するが、「Go Teamによる公式のAndroidサポートに向けて、現在の作業がある種の刺激になる」ことを期待している。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.