【2023年版】LINE WORKS Developersでできること

これは LINE WORKS Advent Calendar 2023 の 1日目の記事です。

アドベントカレンダー初日です！今日は、LINE WORKSの開発者向け機能にはどういうものがあるのか、何ができるのか、まとめてみようと思います。

去年のアドカレでも [LINE WORKS Developersでできること](https://qiita.com/mmclsntr/items/fbbe0827c4d4d7e7bbd9) という記事を書きましたが、今年もいろいろとアップデートがありましたので、2023年版として書きます。

具体的な実装の話は他記事参照で、ここでは概要だけ紹介します。

# LINE WORKS Developersとは
LINE WORKS Developersでは普段のLINE WORKSに+αするための開発者向け機能が提供されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/1f6601a8-ba87-5dd8-75e3-e3f4c31eed50.png)

LINE WORKS上の一部作業の自動化や、他のサービスとをつなぐ連携の仕組みを実現できます。

:book: [Developersサイト](https://developers.worksmobile.com/jp )

# LINE WORKSと連携すると何が嬉しいか
これらDevelopers機能はLINE WORKSとの連携の口として存在しています。

既にLINE WORKSではトークやカレンダー、掲示板などさまざまな機能が提供されていますが、外部サービスと連携することでより業務プロセスにマッチした高度な仕組みを構築できます。
特にLINE WORKSのAPIやBotは、LINE WORKSを起点とした**より幅広い業務改善・効率化を実現**するために活用されます。

また、社内サービスやその他外部サービスなど、普段の仕事で複数サービスを使っている場合には、フロントエンドをLINE WORKSにまとめることができ、複数アプリを行ったり来たりするようなことのないシンプルな形にもなります。
結果として**多くの業務をLINE WORKS上に集約させることができ、利便性や生産性の向上**にもつながります。

# さまざまなサービスがLINE WORKSとの連携に対応
このDevelopers機能をベースに、既に数多くのサービスがLINE WORKSとの連携に対応しています。一から連携アプリを開発しなくともそれらを活用することで利便性の高い仕組みを早く構築できます。

以下のページにて100以上の連携ツールを紹介しています。

https://line.worksmobile.com/jp/feature/integration/ 

また、「アプリディレクトリ」という連携アプリのためのマーケットプレイスもあり、ここで提供されている連携アプリは管理者画面から簡単にインストールできます。

https://line.worksmobile.com/jp/appdirectory/　

これらに対応していない外部サービスや自社の独自システム等とLINE WORKSを連携させたい場合は、Developers機能を使って自身で連携アプリを開発することができます。

# 活用事例
LINE WORKSの事例ページにて、連携アプリの活用事例もたくさん掲載されています。

例. **中森農産株式会社**

https://line.worksmobile.com/jp/cases/nai-organic/

例. **パナソニック ホームズ株式会社**

https://line.worksmobile.com/jp/cases/homes-panasonic 

その他の事例はこちらのページ参照。

https://line.worksmobile.com/jp/cases/ 

-----

# Developers機能の紹介
Developers機能としては以下のものがあります。

- **[Bot](https://developers.worksmobile.com/jp/docs/bot)**
    - LINE WORKSのトークルーム上で動くチャットボット。
- **[API](https://developers.worksmobile.com/jp/docs/api)**
    - LINE WORKSとの連携アプリを開発するためのWeb API。
- **[WOFF](https://developers.worksmobile.com/jp/docs/woff-guide)**
    - LINE WORKS上で動くミニアプリを開発。
- **[App Link](https://developers.worksmobile.com/jp/docs/applink)**
    - LINE WORKSの特定のサービスを開くUniversal Linkの機能。
- **[SSO](https://developers.worksmobile.com/jp/docs/sso)**
    - LINE WORKSへのSSO (Single Sign On) を実装する機能 (SAML)。

それぞれの位置関係はこのようになっています。

![lineworksdevelopersmap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/b1b365f2-920a-f168-0afb-9bdf833a7f7b.png)

このうち「Bot」「API」「WOFF」についてもう少し説明します。

## [Bot](https://developers.worksmobile.com/jp/docs/bot)

Botは、トークで利用できるチャットボットの機能であり、このBotを通じてさまざまなシステム連携を実現できます。

<img src="https://line.worksmobile.com/jp/wp-content/uploads/img-bot-02@2x.png" width=50%>

### 機能
LINE WORKSのBotは、テキストでの会話はもちろん、スタンプやファイルなど、様々なメッセージタイプに対応しています。

主な[メッセージタイプ](https://developers.worksmobile.com/jp/docs/bot-send-content)
- テキスト
- スタンプ
- 画像
- ファイル
- 位置情報 (ユーザーから送信のみ)
- [Flexible Template](https://developers.worksmobile.com/jp/docs/bot-send-flex) (Botから送信のみ)
    - レイアウトを自由にカスタマイズできるメッセージ。下の画像参照。

**Flexible Template**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/3fbcb95e-cb60-9989-9d64-5e5a80c32666.png" width=50%>

また、入力方法もキーボード入力だけでなく、「リッチメニュー」や「Quick reply」といった入力を補助する機能も備わっています。

**リッチメニュー**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/359f5003-3e85-7089-e380-5b72fc0d5c16.jpeg" width=50%>
※ [ニュースフィード](https://line.worksmobile.com/jp/appdirectory/newsfeed/) アプリ

**Quick reply**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/7d6d1a4b-ede3-1d95-3e28-8e01b86cce91.png" width=30%>


### 活用
このBotにより、トークをインターフェースとしたチャットベースのアプリケーションをLINE WORKS上に実装でき、システム連携の窓口として活用されています。

例: 

- 商品マスターBot
    - トークを通じて商品コードや商品名から商品内容を検索。
- 売上管理システムBot
    - 日次の売り上げ結果などを定期的にトーク上へ配信
- 監視カメラBot
    - 違反を検知したらその画像と一緒にトークへ通知。
- 安否確認Botなど
    - 緊急時や定期連絡として安否確認メッセージをトークへ自動送信。

前述した外部サービス連携のほとんども、このBotを用いたアプリケーションとして提供がされています。

### 構成イメージ
Bot開発の参考として、簡単に構成についてまとめると以下の図ようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/3f8e2894-5d6a-6e42-1652-7b73021d247f.png)

LINE WORKS側の環境では、Botのインターフェースのみが提供されており、チャットボットサーバーは開発者側の環境にて構築・展開します。ユーザーがトークから送ったメッセージはBotサーバーを経由して開発者環境のチャットボットサーバーへcallbackされ、その内容に応じて生成された返答メッセージをLINE WORKS APIを通して返す流れになります。


## [API](https://developers.worksmobile.com/jp/docs/api)
APIは、LINE WORKSとの連携アプリを開発するためのWeb APIであり、無料で提供されています。

### 機能
利用可能なAPIはLINE WORKSのプランによって異なります。例えば「フリープラン」の場合は以下の機能がAPIを通して利用可能です。

- **Bot**
    - Botの設定やメッセージ送信など
- **カレンダー**
    - カレンダーの作成、予定の追加・取得など
- **掲示板**
    - 掲示板の作成、投稿・コメントなど
- **アドレス帳** (参照のみ)
    - 連絡先の参照など
- **メンバー設定** (参照のみ)
    - メンバー・グループ・組織の参照など

### API実行の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/b91db491-7dae-56b5-7ef3-167ea0c10a00.png)

APIリクエストのためにまずはアクセストークンの発行が必要です。

### APIのアクセストークン取得方法について
アクセストークンの取得には「**User Account認証**」「**Service Account認証**」の2種類存在します。それぞれアクセストークン取得プロセスに特徴があるため、用途にあった認証方式を利用します。

| | [User Account認証](https://developers.worksmobile.com/jp/reference/authorization-auth?lang=ja) | [Service Account認証](https://developers.worksmobile.com/jp/reference/authorization-sa?lang=ja) |
|---|---|---|
|概要|LINE WORKSユーザー(User Account)で認証を行い、アクセストークンを発行|アプリ専用の仮想管理者アカウント(Service Account)で認証を行い、アクセストークンを発行|
|認可方式|OAuth 2.0 (Authorization Code Grant)に準拠|OAuth 2.0を拡張したJWTベースの認可方法。|
|付与される権限|認証を行ったユーザーの権限の一部をアクセストークンに委任する。権限範囲はOAuth Scopeで制御される。|管理者権限の一部をアクセストークンに委任する。権限範囲はOAuth Scopeで制御される。|
|流れ|ユーザーでログインを行い、アクセストークンを発行。|Service Accountの情報を利用してJWTを生成し、それを元にアクセストークンを発行|
|用途|スマホアプリやWebアプリ上にAPI連携を組み込む場合。|チャットボットやバッチ処理などシステムがAPIを利用する場合。|

## [WOFF](https://developers.worksmobile.com/jp/docs/woff-guide)
**WORKS Front-end Framework（WOFF）** は、LINE WORKS上で動くWeb アプリを実装できる開発プラットフォームです。

このWOFFで作られた Web アプリ（= WOFFアプリ）は、トークメッセージなどからシームレスに立ち上がるミニアプリとして、幅広い連携を実現します。

![WOFF_capture.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241369/606b3675-dee9-8f7a-71a1-c6849d2f16b3.png)


### 機能
WOFF SDKを通してさまざまな機能が提供されています。

- ユーザーIDの取得
- トークへメッセージの送信
- QRコードのスキャン

### 使い所

1. 複数項目を入力させたい時
    - 複数の情報を一度に入力し、フォーム送信 (e.g. 実績登録、予約登録など)
    - 取得したユーザーIDを使って、送信ユーザーの特定も可能。 
2. 情報検索や複雑な情報の表示をしたい時
    - 情報の検索や表示をするケース。 (e.g. 在庫管理、ファイル検索など)
    - テーブル表示やエクスプローラー機能をWOFFアプリで実現。
    - メッセージ送信機能でトークルームへ共有も可能。
    - QRコードのスキャン機能でQRコードから検索するといったことも可能
3. グラフィカルなUI/UXを提供したい時
    - グラフィカルなUIを表示させて、自由度の高い体験を実装したいケース。(e.g. 実績表示、使用量表示、分析結果表示など)
    - 取得したユーザーIDを使って、表示したユーザーに合わせてコンテンツを変えることも可能。

# まとめ
入門的な内容としてDevelopers機能を使うとどういうことができるのかや機能紹介をまとめました。

LINE WORKSの可能性を広げるDevelopers機能をぜひご活用ください。

QiitaにもさまざまなTipsが投稿されているので、実際に開発する際は参考にしていただくと良いと思います。

https://qiita.com/tags/lineworks