はじめに
日本1EdTech協会 LTI部会の@mkuboです。
日本1EdTech協会は、教育システム間のデータ連携の国際標準化団体 1EdTech Consortiumが管理している色々な技術標準の日本国内でのユーザコミュニティです。
この記事では、1EdTechのデータ連携規格の Learning Tools Interoperability(以下LTI)について、初学者エンジニアの方が触りながら理解していくときのおすすめ学習ステップを書いていきます。
「そもそもLTIって何なの?」といった概念的なところは何となく理解したが、動かしたことはない…といった方向けです。
大きく「触ってみる」パートと「仕様ドキュメントを読んで理解する」パートに分けて、それぞれこんなステップで学習を進めていくとよいのでは?という目次になります。
元々は社内向けに書いたものを一部アレンジしています。
まずは触ってみる
1. LTI実装済みの製品で、連携設定済みのものを動かしてみる
- 環境が入手できればなのですが、まずは何はともあれPlatform(LMS)から学習ツールのシングルサインオン起動が成功するところまでを確認してみます。成功しても見た目がめっちゃ地味…それがLTIです。
- 次に、ブラウザ開発者ツールやHTTPキャプチャツールを使ってやりとりの中身を見てみます。
- LTI起動時に別タブが開く場合、開発者ツールだとキャプチャしきれない場合があるので、Fiddler等のHTTPキャプチャツールがおすすめです。
- 確認するもの
- ①サードパーティーログイン開始、②認証リクエスト、③ユーザー情報授受の流れ(★)
- ③のIDトークンの中身(jwt.io等でデコードできます)
- 動作確認用のブラウザ拡張も出ているようです。Fiddlerが使えない方はどうぞ。手元ではFirefoxの方はうまく動きませんでした。
2. 実装済みのPlatform, Toolを使って、連携設定をしてみる
できればPlatform, Tool各2製品以上試すと、UIやLTI活用のイメージが湧きやすくなるので、本格的に開発検討している人にはおすすめです。
Platform側のおすすめはMoodleです。OSSですし、LTIの世界的エキスパートの方が開発に関わっているので、実装がきっちりしてます。
AWSユーザなど、使える方はBitnamiのAMIから構築するのがラクでおすすめです!
学習ツール側は、1EdTech公式の動作確認ツールを挙げておきます。
1EdTech Reference Implementation
- 一部機能は1EdTech本家の会員企業だけしか使えないようなのですが、基本のLTI起動(Core)だけなら無料で試せます。
- 開発用ツールなので実際の学習ツールのUXとはだいぶ違いますが、OpenId Connectの動きは追いやすくなっているので、その理解のためにはおすすめです。
このとき、連携設定で入力したいろいろな設定値が、上記の★の流れの中でどう使われるのか気にすると、把握の精度が上がると思います。
3. サンプルコードを手元で動かし、コードレベルで把握する
1EdTech公式はlti-1-3-php-example-toolです。
ltibootcampに他の言語のサンプルやライブラリなども一覧化されています。ここは一度見てみるとよいです。
ドキュメントを読む
大きくは、①LTIでPlatformから学習ツールに渡されるユーザ属性情報、②一連の通信プロトコル(上記★)の順番で見ていくのがおすすめです。
1. LTIでPlatformから学習ツールに渡されるユーザ属性情報(IDトークン内のクレーム)
LTIは言ってみればOpenID Connectの拡張で、基本はOpenID Connectで定義されているユーザ属性情報(クレーム)があり、そこに教育システムならではの情報が足されるようなイメージです。
なので、キャプチャ・デコードしてみたIDトークンと突き合わせて見ていくような時は、OpenID Connectで定義されている情報はOpenID Connectのドキュメント、LTIで独自に定義されているクレームはLTI Coreのドキュメント・・・という感じで参照すると、理解がクリアになるかなと思います。
- OpenID Connectで定義されているもの:OpenID Connect Core 1.0
- LTIで独自に足されているもの:Learning Tools Interoperability (LTI)® Core Specification
2. 通信プロトコルの流れ
ベースはOpenID Connect Coreなのですが、OpenID Connectにはユースケース別に複数のフローがあるので、まずは1EdTechのSecurity Frameworkから見ていくのがいいかなと思います。
- 基本の流れ:1EdTech Security Framework
- Security FrameworkにはおおむねOpenId Connectと同じ内容が書いてあるのですが、LTIで使われるフローだけに絞ってあるので、混乱しにくいと思います。
- OpenID Connect本家:OpenID Connect Core 1.0
- LTIで独自に足されているもの:Learning Tools Interoperability (LTI)® Core Specification