メインコンテンツまでスキップ

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/smartlimeiAP と連携する SDK 本体。ログイン、API の呼び出し、iAP の画面の表示などを提供する
@intra-mart/smartlime-uismartlime を使う 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 が決まっています。

smartlimeExpo SDK
3.0.056

Accel CLI でモバイルプロジェクトを作成するときは、smartlime が対応している Expo SDK だけを選べます。

Expo SDK の更新について

アプリの Expo SDK は、smartlime が新しい SDK に対応するまで上げないでください。Expo のツール(expo-doctor など)が SDK の更新を勧める場合がありますが、smartlime が対応していない SDK では動作しません。