Adaloでカスタムプラグインを作ってみよう
初めに
AdaloとはReactNativeベースのネイティブアプリが作れるノーコードツールです。また本ツールではユーザが自由にカスタムコンポーネントを作成できるようになっているので開発、テスト、公開までの手順をご紹介します。
必要事項
基本的な事項は以下に記載されています。それではサクサク進めていきましょう。
検証環境
- フォルダ構成
├── adalo-random-picker
│ ├── LICENSE
│ ├── README.md
│ ├── adalo.json
│ ├── dist
│ ├── index.js
│ ├── logo.png
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ └── yarn.lock
└── mobile-previewer
カスタムコンポーネント「adalo-random-picker」と「mobile-previewer」はあえて同じ階層に位置させているので注意。
Item | Version |
---|---|
OS | MacBook Pro, Apple M1 Pro, macOS Monterey 12.3 |
Node | npx - 6.14.16, node - 14.19.1 |
Xcode | 13.4.1 |
- Software:
brew list --version|grep -E '(watchman|cocoapods)'
cocoapods 1.11.3
watchman 2022.06.27.00
手順
npxコマンドとは - https://zenn.dev/ryuu/articles/what-npxcommand
$ npx create-adalo-component my-component
npx: installed 58 in 5.599s
Create Adalo Library
✨ What is the name of your Adalo Library? myLibrary
✨ What is the name of your Adalo Component? myComponent
✨ Which type of React component would you like to use? Functional
[1/2] ✔ Library Built
[2/2] ✔ Dependencies installed
...
$ cd my-component
$ npx adalo login
> mylibrary@1.0.0 login /Users/hoge/projects/tweakit/my-component
> adalo login
prompt: email: <your-email>
prompt: password: <your-pass>
Login successful!
Your login information was saved to /Users/hoge/.adalorc
$ npx adalo dev
後は Adaloのアプリを適当に開くとDevelopment
の項目に表示されます。時々ブラウザをリロードしないと見えない時があります。
テスト手順
WebでひとまずテストしてからiOS -> Androidの順にテストすると良いです。
iOSテスト編
必要条件
- XCode
- Watchman (For react native)
- Cocoapods (For iOS)
- Node (>10)
Watchman, CocoapodsはMacOSであればbrewでインストール可能です:
brew install cocoapods watchman
Nodeはnvmがおすすめです: (macOS) NVMでNodeのバージョン管理
npmが入ってたら
yarn
も併せてインストールしましょう:npm install --global yarn
セットアップ (iOS)
-
git clone https://github.com/AdaloHQ/mobile-previewer
&cd mobile-previewer
- 依存関係のインストール等
mobile-previewer/ $ cd ios
mobile-previewer/ios $ yarn install
yarn install v1.22.19
[1/4] 🔍 Resolving packages...
[2/4] 🚚 Fetching packages...
[3/4] 🔗 Linking dependencies...
...
Pod installation complete! There are 47 dependencies from the Podfile and 58 total pods installed.
mobile-previewer/ios $ yarn start
yarn run v1.22.19
...
To reload the app press "r"
To open developer menu press "d"
-
mobile-previewer/ios
フォルダのAdaloApp.xcworkspace
をXcodeで開き、Buildする
無事にBuildが成功すれば次に進めます。
自作のコンポーネントを読み込ませる
https://github.com/amezousan/adalo-random-picker を例にして説明します。
- 依存関係をインストール、アプリを開始
yarn install
yarn start
-
mobile-previewer/package.json
で、dependenciesの配下に自作コンポーネントと同名の名前(https://github.com/amezousan/adalo-random-picker/blob/master/package.json#L2)で読み込ませる。
"dependencies": {
...
"rn-fetch-blob": "0.11.2",
"random-picker": "../adalo-random-picker"
💡 通常は数字が入るバージョンのところには、カスタムコンポーネントのフォルダを指定します。今回、mobile-previewerとadalo-random-pickerは同じレベルの階層にあるので「../」を用いた相対パスで指定しています。
Adalo上での自作コンポーネントは「
<package.json - name>.<package.json - adalo.components[].name>
」のようにネーミングされ呼び出されます。
はまったこと
-
初め検証途中に、watchman/podmanを入れ忘れた場合のみ、Buildが上手くいかなかった時の対処法。恐らく意味ない。
https://github.com/amplitude/Amplitude-ReactNative/issues/40#issuecomment-1168706867 -
画面が真っ白で何も表示されない
Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
[Sun Jul 03 2022 10:30:50.588] ERROR Invariant Violation: Native module cannot be null.
[Sun Jul 03 2022 10:30:50.588] ERROR Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication)
[Sun Jul 03 2022 10:30:51.562] ERROR Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication)