smartlime とは
smartlime は、Expo で作るモバイルアプリから iAP を使うための SDK です。npm パッケージ @intra-mart/smartlime として公開されています(MIT ライセンス)。
iAP と連携するアプリでは、iAP へのログイン、アクセストークンの保存と更新、iAP の API の呼び出しといった処理が必ず必要になります。smartlime はこれらを React のコンポーネントとフックとして提供するため、アプリの開発者は画面と業務の処理に集中できます。
Expo とは
Expo は、React Native でモバイルアプリを開発するためのフレームワークとツール群です。TypeScript で書いた 1 つのコードから、iOS と Android の両方のアプリを作れます。
- Expo SDK:カメラや安全な保存領域などのネイティブ機能を、JavaScript から使えるようにするライブラリ群です。SDK 56 のようにバージョンを番号で区別し、バージョンが変わると API も変わることがあります。
- Expo Router:ファイルの配置で画面遷移を定義する仕組みです。
- EAS(Expo Application Services):アプリのビルド、ストアへの提出、アップデートの配信をクラウドで行うサービスです。
パッケージの構成
| パッケージ | 内容 |
|---|---|
@intra-mart/smartlime | iAP と連携する SDK 本体。ログイン、API の呼び出し、iAP の画面の表示などを提供する |
@intra-mart/smartlime-ui | smartlime を使う UI 部品。ログイン画面、検索画面、カレンダーを提供する |
2 つのパッケージは、同じバージョンに揃えて使います。
主な機能
| 機能 | 内容 | 主な部品 |
|---|---|---|
| iAP へのログイン | iAP を認可サーバとして OAuth 2.0(認可コード + PKCE)でログインする。トークンは端末の安全な保存領域に保存され、有効期限が切れる前や失効したときに自動で更新される | Smartlime、useAuthState、useStartAuth |
| ログインユーザの情報 | ログインユーザの情報や、iAP に導入されているモジュールを取得する | useMe、useIMModules |
| iAP の API の呼び出し | IM-Workflow などの REST API を、アクセストークンを付けて呼び出す。トークンが失効していれば更新して再送する | useIMFetch |
| iAP の画面の表示 | ログイン中のトークンから iAP のセッションを作り、iAP の画面(ワークフローの申請画面など)をアプリ内に表示する | IMWebView |
| 検索と選択 | ユーザ・組織・役職・パブリックグループ・ロールを検索して選択させる | useIMSearch、DefaultSearchUI |
| カレンダー | iAP のカレンダー(稼働日・休日)を表示し、日付を選択させる | IMCalendar |
| IM-Copilot との会話 | IM-Copilot のアシスタントとチャットする | useAssistant |
各機能の実装方法は、モバイルプロジェクトに配備されるスキルセットにまとめられています。エージェントに作りたい機能を伝えれば、対応するスキルを参照して実装します。
iAP と連携する仕組み
アプリ全体を Smartlime コンポーネントで囲むと、その内側の画面で smartlime のフックを使えるようになります。
アプリは iAP のユーザ名やパスワードを扱いません。ログインは iAP のログイン画面で行い、アプリはその結果のトークンだけを使います。
iAP 側で必要なもの
アプリが連携する iAP には、次の準備が必要です。
| 項目 | 内容 |
|---|---|
| モジュール | モバイルアプリケーション連携(jp.co.intra_mart.im_smacolow)が導入されていること。smartlime の API の多くは、このモジュールが提供する API を呼び出す |
| OAuth クライアント | アプリを OAuth クライアントとして登録すること。登録する値は AIネイティブ開発の流れ を参照 |
| IM-Copilot | アシスタントとの会話を使う場合のみ。IM-Copilot が導入され、アシスタントが設定されていること |
対応する Expo SDK
smartlime は、バージョンごとに対応する Expo SDK が決まっています。
| smartlime | Expo SDK |
|---|---|
| 3.0.0 | 56 |
Accel CLI でモバイルプロジェクトを作成するときは、smartlime が対応している Expo SDK だけを選べます。
アプリの Expo SDK は、smartlime が新しい SDK に対応するまで上げないでください。Expo のツール(expo-doctor など)が SDK の更新を勧める場合がありますが、smartlime が対応していない SDK では動作しません。