🙌

Androidアプリ開発で知らずに著作権侵害をする前に。OSS情報書いてますか?

2024/03/30に公開

こんにちわ。昨年(23年末)に開発者登録し、アプリのリリースを始めたzm softです。PlayStoreのクローズドテストをクリアするための開発者向けのテスター募集アプリもリリースを予定していますので、よければご確認ください。

皆さんアプリを作るときにOSS情報書いてますか?アプリ開発を行う際、多くの開発者はプライバシーポリシーの記載には気を配りますが、オープンソースソフトウェア(OSS)の情報については見過ごしがちです。しかし、OSSのライセンス情報は、使用しているOSSによっては、その表示が法律的に求められることもあります。

特に、プライバシーポリシーに関してはGoogle Playの監査で指摘されることが多いため、ほとんどの開発者がこの部分には注意を払います。一方で、OSSのライセンス情報に関しては、同様の監査で指摘されることが少ないため、遵守していない開発者も少なくありません。実際に私がテスターとしてアプリを利用してもOSS情報がないアプリを多く見かけます。

OSS表示対応の難しさ

私自身は自分のアプリをOSS対応させる際に、アプリ内にテキスト表示用のビューを設け、そこでプライバシーポリシーと共にOSS情報を表示していました。特定のフォルダにOSSごとのテキストファイルを配置することで、自動的にこれらの情報をビュー内に表示できる方式を取りました。実際の実装はこんな感じです。_assets/oss_フォルダにテキストを置いておき、それを読み出すだけです。あとは適当なViewで表示するだけで対応は完了です。

fun readLicenseTexts(): Map<String,String>{
     var map : MutableMap <String,String> = mutableMapOf() 
     val fileList = assetManager.list("oss") 
     if (fileList != null) {
         for (file in fileList) {
             map.put(file.replace(".txt",""), readTextAssets("oss/$file")) 
         }
     } return map }
     
fun readLicenseTexts(): Map<String,String>{
    var map : MutableMap <String,String> = mutableMapOf()
    val fileList = assetManager.list("oss")
    if (fileList != null) {
        for (file in fileList) {
            map.put(file.replace(".txt",""), readTextAssets("oss/$file"))
        }
    } return map
}

しかし、開発が進むにつれてこの方法のメンテナンスが困難になってきました。OSSの追加が後回しにしてしまいがちで、複数のアプリを開発しているとOSS情報の更新を忘れてしまうこともあります。結局そのままメンテしきれなくなってきてしまいました。

OSS対応の救世主

面倒ごとは、誰かに任せたい。そこでライブラリを使って表示するようにしました。今のところ問題なさそうで、すごく楽になりました。もっと早くに使っておけばよかった、というのが正直な感想です。私が利用してみたのは、**AboutLibraries**というライブラリです。

使い方は、非常に簡単です。実装部分はほぼ以下の部分だけです。

val fragment = LibsBuilder() .supportFragment()
val transaction = activity.supportFragmentManager.beginTransaction()
transaction.add(R.id.libsFragment, fragment) transaction.commit()

Fragmentで完結してくれるので、適当な場所を設けてそれを表示してやるだけでOSS対応がほぼ完成します。

手軽に対応の割に見た目のよいデザイン

実際に表示した時の画面イメージはこんな感じです。

さっと作った割にすごくそれっぽい見た目になりました。内容も問題ありませんでした(勿論、万能ではないはずなので注意は必要ですが)。すごく良いです。

実際の使い方をもう少し詳しく

勿論、実際にはもう少しやらなければいけないことがあるので記載しておきます。とは言ってもライブラリの取り込みぐらいです。build.gradleの修正をします。pluginとdependenciesにaboutlibrariesの指定を追加します。バージョンは適宜指定してください。

plugins {
    id ("com.mikepenz.aboutlibraries.plugin")
}
dependencies {
    implementation ("com.mikepenz:aboutlibraries:10.10.0")
}

その他のライブラリ

私は利用していませんが、その他にも同様にOSSライセンス表示のためのライブラリは多数あるようでした。有名どころと思われるものを挙げておきます。

  1. OSS Licenses Plugin
    • Googleが提供するGradleプラグインで、アプリのビルドプロセス中に使用されているオープンソースライブラリのライセンス情報を自動的に収集し、それらを表示するためのアクティビティを生成します。これは、特にGoogleのライブラリを多用している場合に有効。
  2. LicenseAdapter
    • オープンソースのライブラリのライセンス情報をリスト表示するためのシンプルなAdapterです。このライブラリを使えば、カスタムUIにライセンス情報を統合することができる。
  3. LicensesDialog
    • アプリ内でオープンソースライブラリのライセンス情報を表示するためのダイアログを簡単に作成できるライブラリです。

いずれも評判がよさそうで、利用自体も簡単なようです。用途にあったものを使い、安心してアプリ開発を進めましょう。

Discussion