LTI基礎編  ①LTIの基本

# はじめに
LTIとはLearning Tools Interoperability（学習ツールの相互運用性）の略称であり、LMS（学習管理システム）を始めとする学習用プラットフォームと教材・学習ツールを連携させるための国際技術標準です。
教育関連のシステムやアプリケーションの利用者、導入者、開発・提供者それぞれにとってLTIを活用することには様々なメリットがあります。
今回はLTIの概要・詳細について、次の4つの記事を作成しました。
**LTI基礎編**
記事①LTIの基本 ⇒ 本記事
記事②[利用の流れ（連携初期設定～ツール呼び出しまで）](https://qiita.com/Hiroki_Kobari/items/a68026faa3a9cbaeff2c)
記事③[押さえておきたいキーワード](https://qiita.com/Hiroki_Kobari/items/75e216b7be6b6cadb430)

**LTI詳細編**
記事④[LTI Coreの通信フロー](https://qiita.com/Hiroki_Kobari/items/c9054769efad0f6b2822)

本記事は1つ目のLTI概要編①LTIの基本になります。
ここでは、LTIを活用するメリットやLTIの仕組みといったLTIを理解する上で基本となる部分について説明します。

※本記事では、次の用語は以下の内容を指しています。
- LTI ⇒ LTI 1.3
- プラットフォーム ⇒ LMS
※一般的には、LMSがプラットフォームになることが多いですが、必ずしもLMSである必要はありません。
- ツール ⇒ 教材や学習コンテンツなどの学習ツール

# 1. LTI活用のメリット
本章では、LTIを活用することによって得られるメリットについて説明します。
## 1.1. プラットフォームとツールの連携
LTIを活用するメリットの1つ目が「プラットフォームとツールの連携」です。
通常であれば、プラットフォームやツールを利用するためにはそれぞれID・パスワードを入力し、個別にログインする必要があります。そのため、個々でID・パスワードを管理・入力する必要がありますが、LTIの規格に則ったプラットフォームとツール同士であればシームレスに連携することが可能です。
LTIを活用することでプラットフォームとツール間でシングルサインオン（SSO）を実現することができます。一度プラットフォームにログインするだけでLTIで連携されている全てのツールにID・パスワードを入力せずにログインすることができるようになります。これにより、たくさんのID・パスワードを管理する手間が不要になり、利便性を向上させることができます。
しかし、同様の機能であればMicrosoft 365のアカウントやGoogle Workspace for Educationのアカウントを使ったSSOに対応しているサービスは既に多くの場所で活用されており、「わざわざLTIを使う必要はないのでは？」と考えた方もいるかと思います。
そこで次の章では、LTIが単にSSO機能を実現するだけのものではないということを、LTIを活用するもう1つのメリットと交えながら説明します。

## 1.2. プラットフォームとツール間のデータ連携
LTIはSSOに必要なユーザーの認証情報をプラットフォームとツール間で連携するだけでなく、それ以外にも教育現場において必要となるデータの連携を可能にします。具体的に連携できるデータには次のようなものがあります。
- ユーザー情報
名前、メールアドレス、ユーザーID、ロール情報（学習者、教員など）
- コンテキスト情報
コース情報、グループ情報、組織情報（学校名、企業名など）

上記以外にも様々なデータを連携することができ、それらをLMSで一元的に管理することが可能になります。これにより、生徒情報などの管理が容易になるだけでなく、今までバラバラになっていたデータが統合されることで新たなデータ分析にも利用することができるようになり、指導者・学習者など様々な人達にとって多くの利点がもたらされます。

## 1.3. LTI Advantageについて
ここまで説明したLTIの基本的な機能はLTI Coreと呼ばれます。LTIにはこのLTI Core以外にも、より柔軟で便利な連携のために、LTIと連携して利用される標準規格が3つ存在し、それらを総称してLTI Advantageと呼びます。この章では、LTI Advantageが提供する機能について、それぞれ簡単に説明します。

#### Assignment and Grade Services（AGS）
AGSはプラットフォームとLTI連携しているツール間で成績情報をやり取りするために策定された標準規格で、具体的には次の3つの機能を提供します。
①プラットフォームが管理している成績簿に対して、ツールから新たな項目を追加する機能
②ツールから①で追加した項目に対して、成績情報を書き込む機能
③ツールがプラットフォームの成績簿からユーザーの成績情報を取得する機能
これらの機能によって、ツール側で成績管理機能を実装する必要がなくなります。また、単にツール側で生成されるスコア情報などをプラットフォーム側に追加するだけでなく、プラットフォーム側で管理されている成績情報を取得することもできるため、データ活用の幅が広がります。

#### Deep Linking（DL）
LTIによって統合された学習コンテンツやテストなどを教員が授業で利用する場合、授業で利用する範囲を選択して学習者に提示することが望まれ、これを実現するために策定されたのがDLです。教員がプラットフォームのツール設定画面に配置されたリンクからツールを起動すると、学習コンテンツやテストの選択画面が表示されます。そこから授業で利用するものを選択することで、プラットフォームにそのコンテンツへのリンクが自動的に追加され、学習者はその追加されたリンクから教員の選択したコンテンツを利用することができます。DLを利用しない場合、これらのコンテンツへのリンクを1つ1つ個別に設定する必要がありますが、DLを利用することで画面上から容易にそれぞれのコンテンツへのLTIリンクを設置することが可能になります。

#### Names and Role Provisioning Services（NRPS） 
LTI Coreの仕様では、プラットフォームからツールに送られるユーザー情報は、ツールを起動したユーザーのものだけになっています。そのため、例えばツール側でクラス全員のユーザー情報が必要となるようなユースケースがある場合、そのユースケースを満たすことができません。そこでこの要件を実現するためにNRPSという標準規格が策定されました。NRPSを利用することによって、プラットフォームが管理している名簿から、ユーザーのID・名前・メールアドレス・ロール情報などをツールから取得することができるようになります。


# 2. LTIの実装と認証について
## 2.1. Reference Implementation（参照実装）
ここまで説明してきたようなLTIの機能に対応したプラットフォームやツールを実装する一助として、1EdTechが提供する「Reference Implementation」があります。このReference Implementationはプラットフォームとツールの両方の機能を含んでおり、これを手本とすることで1EdTechが策定するLTIの仕様に沿った実装が行いやすくなります。また、プラットフォームまたはツールを実装した後、Reference Implementationを使ってLTI連携のテストを行うことも可能です。
※Reference Implementationで、LTI Advantage機能を含むすべての機能に触れるためには1EdTechの会員になる必要があります。

Reference Implementation：https://lti-ri.imsglobal.org/

## 2.2. Conformance Test（適合試験）
公式にLTIの仕様に準拠したプラットフォームまたはツールであることを証明するためには、1EdTechが用意している「Conformance Test」と呼ばれる適合試験に合格する必要があります。これに合格し、1EdTechからCertificate（認証）を取ることでLTIに対応したプラットフォームおよびツールであることの証明となります。
Conformance Testは、プラットフォームとツールそれぞれの役割に応じて試験内容が定義されています。ツールの適合試験には、Core機能だけに範囲を絞った試験と、Advantageに含まれる機能それぞれ対する試験が用意されています。そのため、Advantage機能についてはツールで実装しているものだけを選択して試験を受けることができます。それに対し、プラットフォームは様々なLTI準拠ツールと接続することが想定されるため、Core機能とAdvantage機能のすべてに対応することを求められる適合試験になってます。

Conformance Test：https://www.imsglobal.org/lti-advantage-certification-suite

## 2.3. TrustEd Apps Directory
前述したConformance Testに合格してLTI認証を取っているプラットフォームおよびツールは、「TrustEd Apps Directory」というサイトでその一覧を確認することができます。そのため、このサイトに記載されているプラットフォームやツールは、正式にLTIに対応しているということを証明することができます。

TrustEd Apps Directory：https://site.imsglobal.org/certifications

# 3. LTI Coreで連携できる情報
1章で説明したようにLTI連携されたプラットフォームとツール間では、SSOのための認証情報やユーザー情報など様々な情報がやり取りされています。本章では、具体的にどのようなデータがプラットフォームとツール間で連携されているかについて説明します。
LTIはOpenID Connect（OIDC）という広く使われている認証情報を連携するための標準規格をベースにしており、そこにLTI独自に定義したパラメーターを追加したものになっています。OIDCをベースにすることによって、LTIはシームレスでセキュアな連携を実現することができると同時に、標準化された認証フローに基づいているため、実装がしやすくなっています。
ここではOIDCの詳しい説明は行いませんが、LTI詳細編④[LTI Coreの連携フロー](https://qiita.com/Hiroki_Kobari/private/c9054769efad0f6b2822)にて、OIDCの詳細を含むLTI Coreの連携フローの説明を行いますので、詳細を知りたい方はそちらを参考にしていただければ幸いです。

1.2章で少し触れましたが、LTIではユーザー情報やコンテキスト情報など連携することができます。ここからは、それらの情報が具体的にどのようなパラメーターを介してやり取りされているかについて、実際のLTIのパラメーターと紐付けながら説明していきます。

#### sub
OIDCで使われるIDトークンに含まれるパラメーターの1つで、プラットフォーム上のユーザーを識別するための値です。ユーザーのUUIDやログインIDなどユーザーを一意に特定することのできる値が使用されます。

#### roles
学習者/教員/管理者など、ユーザーが持つロールを識別するための値です。

#### deployment_id
プラットフォーム内で発行される一意の値であり、プラットフォームとツールの統合を識別するために使用されます。

#### target_link_uri
OIDCで使われるIDトークンに含まれるパラメーターの1つで、最終的にアクセスするLTIツールのリソースを指す値です。

#### resource_link
プラットフォーム上に設置されたツール上のリソース（学習コンテンツ）へのリンクです。それぞれのリソースリンクには、プラットフォーム全体で一意であるリソースリンクIDが割り振られ、このIDによって同じリソースにアクセスする複数のリンクがある場合でも、それらを区別することができます。

#### context
コース情報やセッション情報、グループ情報など、どの教育コンテキストでツールが起動されたかを識別するために使用されます。

#### message_type
LTIのメッセージタイプを示す値です。通常のリソースリンクを使う場合は"LtiResourceLinkRequest"、1.3で説明したDLを使う場合は"LtiDeepLinkingRequest"のような形式で指定します。
下図は"LtiResourceLinkRequest"のイメージ図で、"deployment_id"によってプラットフォームとツールの連携を識別し、"resource_link"からツールの起動リクエストを送信します。
![LTI resource link launch request.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3725519/f66df867-504c-4651-24ca-73fdf00b393e.jpeg)
引用：[Learning Tools Interoperability (LTI)® Core Specification - Figure 4](https://www.imsglobal.org/spec/lti/v1p3/)

#### custom
開発者が独自に定義することのできる情報です。

ここでは、ユーザーを識別する"sub"やユーザーの役割を識別する"roles"など、プラットフォームやツールを使う中でよく目にするであろうものを中心に取り上げています。取り上げた中では、"context"と"custom"以外のパラメーターはLTI連携の際に必須となるものです。"context"と"custom"は必須ではありませんが、コース情報などのコンテキスト情報を渡せる"context"やユーザーが自由にカスタムすることのできる"custom"といったパラメーターを活用することで、1.2章で説明したような様々なデータの連携を実現することができます。

# 参考資料
+ [Learning Tools Interoperability (LTI)® Core Specification](https://www.imsglobal.org/spec/lti/v1p3/)
+ [Learning Tools Interoperability (LTI) Assignment and Grade Services Specification](https://www.imsglobal.org/spec/lti-ags/v2p0/)
+ [Learning Tools Interoperability (LTI)® Deep Linking Specification](https://www.imsglobal.org/spec/lti-dl/v2p0/)
+ [Learning Tools Interoperability (LTI)® Names and Role Provisioning Services](https://www.imsglobal.org/spec/lti-nrps/v2p0)
+ [1EdTech Security Framework](https://www.imsglobal.org/spec/security/v1p1)
+ [OpenID Connect Core 1.0 incorporating errata set 1](https://openid-foundation-japan.github.io/openid-connect-core-1_0.ja.html)
+ [学習基盤を拡張する国際技術標準 IMS LTI 1.3 第1回～第3回](https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_snippet&all=&title=%E5%AD%A6%E7%BF%92%E5%9F%BA%E7%9B%A4%E3%82%92%E6%8B%A1%E5%BC%B5%E3%81%99%E3%82%8B%E5%9B%BD%E9%9A%9B%E6%8A%80%E8%A1%93%E6%A8%99%E6%BA%96%20ims%20lti%201.3&count=20&order=7&pn=1&page_id=13&block_id=8)