PL/Iを学ぼうと思い立ったとき、最初にぶつかった壁。
「日本語書籍、手に入らない」
Amazonには星1の酷評レビューが付いたKindleが1つだけ。
他は全部品切れ。
かろうじて見つかったIBM公式の学習コースは英語。
しかもC/C++の知識が前提。
私は英語もCもほとんどできない。
そこでIBM Bobに頼ることにした。
この記事では、Bobを使ってPL/Iを学習した方法を紹介します。
目次
学習者プロフィール
- 社会人2年目
- Pythonは書ける
- Cはfor文とif文くらいしか読み書きできない
- ハードウェア知識はほぼゼロ
使用した教材
教材の概要
- IBM公式学習コース「Introduction to the PL/I Programming Language」
- 全 15 Unit (合計 42 Section)、8時間のコース
- 提供されている教材は全て英語
- PDF資料 (各Unit 1ファイル)
- サンプルコード (各Unit 1ファイル)
- 動画 (各Section 1本)
- 動画字幕テキストファイル (各Section 1ファイル)
本記事執筆時点の学習状況
- Unit 1-5を完了
- 学んだ内容
- 基本構文 (パッケージ、プロシージャ、変数宣言)
- データ型 (BIT型、整数型、文字列型、ユーザー定義型)
- 制御構造 (IF文、DOループ)
- 配列操作
- 文字列操作
Bobを使ったPL/I学習フロー
Bobを使ったPL/I学習の全体フローは次のとおりです。
<セットアップ>
- 教材の準備
- 学習計画の作成
- ルールファイル (AGENTS.md) の作成
<学習サイクル (各Unitで繰り返し)>
- 学習用ドキュメントと演習問題の作成
- ドキュメントを読んで学習→AskモードでBobに質問
- 演習問題に回答
- Bobによる添削とフィードバック
- IBM公式学習コースのCheckpoint (クイズ) に回答
セットアップ
教材の準備
IBM公式学習コースの資料をBobに読み込ませます。
その際、Bobが参照しやすいようPDF資料はMarkdownに変換しました。
変換用のPythonスクリプトもBobで作成。
PyMuPDFを使ってPDFからテキストを抽出し、Markdown形式で出力します。
<読み込んだ教材>
- PDF資料
- 動画字幕テキストファイル
- サンプルコード
学習計画の作成
BobのPlanモードで学習計画を作成しました。
<計画に反映させた情報>
- 学習の目的
- 学習者のプロフィール
- 学習スタイルの好み (手を動かしながら学ぶ)
- ドキュメントの好み (余計な補足なし、端的に記述)
- 教材情報 (コース説明、Unit概要など)
作成した計画は教材と同じリポジトリに保存し、ドキュメント作成時に参照します。
ルールファイル (AGENTS.md) の作成
AGENTS.mdでBobの出力をカスタマイズしました。
<特に有効だったルール>
- ドキュメント形式の指定
- 余計な補足を入れない
- 参照元に則って端的に記述
- 禁止事項
- 絵文字の使用
- 完全・完璧といった過剰な誇大表現の使用
- 推測・憶測に基づいた記述・解答
- FAQやよくあるトラブル集など余計な補足項目の作成
Bobを使ったPL/I学習の実例
Unit 4 Section 3「ユーザー定義型」の学習を例に、
実際の学習フローを紹介します。
1. 学習用ドキュメントと演習問題の作成
まず、Bobに学習用ドキュメントと演習問題を作成させます。
<Unit4のドキュメント・問題作成プロンプト>
学習計画: @/plan
対象Unit: Unit4
タスク:
1. 学習計画を読んでBobのタスクを理解する
2. 対象Unitのドキュメントを作成する
2. ドキュメントを読んで学習→AskモードでBobに質問
ドキュメントを読み、理解できなかった部分はAskモードで質問します。
<解説を求めるプロンプト>
対象ドキュメント: @/course/unit04/section3/user-types.md
要件: 対象ドキュメントは改変しない
タスク:
C言語を知らない前提で説明してください
Pythonで例えられる場合はPythonに例えても良いです
3. 演習問題に回答
Bobが作成した演習問題に回答します。
<自分が書いたコード>
ex03: package;
main_proc: procedure options( main );
define alias day_count unsigned fixed bin(16);
declare days_in_month(12) type day_count
init(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
put skip list( days_in_month( 1 ) );
put skip list( days_in_month( 2 ) );
end main_proc;
end ex03;
4. Bobによる添削とフィードバック
書いたコードをBobに添削してもらいます。問題点の指摘だけでなく、改善案も提示してくれます。
<演習問題の添削を求めるプロンプト>
問題: @/course/unit04/section3/user-types.md
回答: @/course/unit04/section3/ex03.pli
タスク:
回答を添削してください
やってみてわかったこと
良い点
自分専用の日本語資料を作成できる
手間なく自然な日本語のシンプルな資料を作成できたため、ストレスなく学習を進めることができました。
理解度に応じた解説を生成できる
基本的にはシンプルなドキュメントで学習を進め、難しいところは何度でも質問して理解を深めることができました。
実行環境がなくてもコードを書いて学習できる
今回は実行環境を用意できませんでしたが、Bobがコードを添削してくれるため、実際にコードを書きながら知識を定着させることができました。
注意が必要な点
演習問題の作成や添削で誤りが発生することがある
少しでも疑わしいと感じた場合はBobに指摘し、出典となる資料を確認するよう指示することで対処できました。
まとめ
本記事では、Bobを使ったPL/I学習の実例を紹介しました。
<Bobを使ったPL/I学習の要点>
- 英語資料を自分専用の日本語教材に変換
- Planモードで体系的かつ自分に最適な学習計画を立案
- AGENTS.mdによるルールの定義と出力内容の制御
- Askモードを用いた疑問点の即時解消
- 実行環境不要の演習とコード添削
この方法はPL/Iの学習にお困りの方はもちろん、
他の言語や分野の学習にも応用できると思います。
皆様もぜひ日々の学びにBobを活用してみてください。




