FlutterでPrivate Packageを作成してわかったメリット・デメリット

こんにちは、株式会社Pentagonでアプリ開発をしている石渡港です。
https://pentagon.tokyo

今回は、FlutterでPrivate Packageを作成する方法について書いていきます。

【こんな人に読んで欲しい】

FlutterでPrivate Packageを作成してみたい人

【この記事を読むメリット】

FlutterでPrivate Packageを作成する方法がわかる

【結論】
メリット

  • 利用するユーザを制限できる
  • 利用ユーザを制限した中で、共通のソースコードを提供できて、さらにはメンテナンスが簡単にできる

デメリット

  • Public Pluginと比べて、pubに則ったLintを利用できない
  • リポジトリの権限を渡すのでソースコードを見られる可能性が高い(なにか制限方法が無いか調査中)

FlutterでPrivate Packageを作成する方法、そして作成したときのメリット・デメリットがわかるので、ぜひご覧ください。

目次

作業環境

Flutter 2.1.3
Xcode 12.5.1
Android Studio 4.1.2

前提

pub.devで公開する通常のPackageの公開方法はこちら

https://blog.pentagon.tokyo/234/

1. Private Packageを作成する

hogeを自分の作成したいパッケージ名に変更して利用してください

flutter create --template=package hoge

私は今回、private_pluginという名前で作成しました。

library private_plugin;

import 'package:flutter/material.dart';

class PrivatePlugin extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Private Plugin');
  }
}

中身にPrivatePluginというクラスを作成しました。
このクラスをWidgetに組み込むと'Private Pluginが表示されます。

2. GitHubなどのリモートリポジトリにアップロードする

次にPrivate Pluginを作成したディレクトリでgit管理を設定します。

設定方法がわからない方はこちらを参考にしてみてください。

今回、私はGitHubのリモートリポジトリにPushしました。

3. プラグインしたい側のpubspec.yamlを設定する

省略

...

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.2

  hoge: # Private Plugin名
    git:
      url: git@github.com:hoge_group/hoge.git # sshの場合 httpsを利用の場合はurl.gitを記入
      ref: HEAD

...

省略

pubspec.yamlに3.で作成したリモートリポジトリを設定してください。

4. 結果

今回作成したPrivate Packageを設定して、下記のようにクラスを呼び出してみました。

import 'package:flutter/material.dart';
import 'package:private_plugin/private_plugin.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Private Plugin Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        body: Center(
          child: PrivatePlugin(),
        ),
      ),
    );
  }
}

Private Pluginと無事に表示されました。

Private Packageを使うメリットデメリットについて

メリット

  • 利用するユーザを制限できる
  • 利用ユーザを制限した中で、共通のソースコードを提供できて、さらにはメンテナンスが簡単にできる

デメリット

  • Public Pluginと比べて、pubに則ったLintを利用できない
  • リポジトリの権限を渡すのでソースコードを見られる可能性が高い(なにか制限方法が無いか調査中)

感想

iOSのFrameworkを作成して、Private podやpodで公開するよりも簡単に設定できると思いました。

まとめ

今回は、FlutterでPrivate Pluginを作成する方法がわかりました。

採用情報はこちら
目次