BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Androidネイティブ開発に関するGo言語の状況

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

原文(投稿日: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サポートに向けて、現在の作業がある種の刺激になる」ことを期待している。

この記事に星をつける

おすすめ度
スタイル

BT