こんにちは、株式会社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を作成する方法がわかりました。