4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonしか書けない新卒がIBM BobでPL/Iを学習してみた【基礎文法編】

4
Posted at

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学習の全体フローは次のとおりです。

PL/I学習の全体フロー

<セットアップ>

  1. 教材の準備
  2. 学習計画の作成
  3. ルールファイル (AGENTS.md) の作成

<学習サイクル (各Unitで繰り返し)>

  1. 学習用ドキュメントと演習問題の作成
  2. ドキュメントを読んで学習→AskモードでBobに質問
  3. 演習問題に回答
  4. Bobによる添削とフィードバック
  5. IBM公式学習コースのCheckpoint (クイズ) に回答

セットアップ

教材の準備

IBM公式学習コースの資料をBobに読み込ませます。
その際、Bobが参照しやすいようPDF資料はMarkdownに変換しました。

変換用のPythonスクリプトもBobで作成。
PyMuPDFを使ってPDFからテキストを抽出し、Markdown形式で出力します。

<読み込んだ教材>

  • PDF資料
  • 動画字幕テキストファイル
  • サンプルコード

学習計画の作成

BobのPlanモードで学習計画を作成しました。

<計画に反映させた情報>

  • 学習の目的
  • 学習者のプロフィール
  • 学習スタイルの好み (手を動かしながら学ぶ)
  • ドキュメントの好み (余計な補足なし、端的に記述)
  • 教材情報 (コース説明、Unit概要など)

作成した計画は教材と同じリポジトリに保存し、ドキュメント作成時に参照します。

ルールファイル (AGENTS.md) の作成

AGENTS.mdでBobの出力をカスタマイズしました。

<特に有効だったルール>

AGENTS.md
- ドキュメント形式の指定
  - 余計な補足を入れない
  - 参照元に則って端的に記述

- 禁止事項
  - 絵文字の使用
  - 完全・完璧といった過剰な誇大表現の使用
  - 推測・憶測に基づいた記述・解答
  - FAQやよくあるトラブル集など余計な補足項目の作成

Bobを使ったPL/I学習の実例

Unit 4 Section 3「ユーザー定義型」の学習を例に、
実際の学習フローを紹介します。

1. 学習用ドキュメントと演習問題の作成

まず、Bobに学習用ドキュメントと演習問題を作成させます。

<Unit4のドキュメント・問題作成プロンプト>

Bobへの入力
学習計画: @/plan
対象Unit: Unit4
タスク: 
1. 学習計画を読んでBobのタスクを理解する
2. 対象Unitのドキュメントを作成する

<Bobの作成したドキュメント (一部)>
Bobの作成したドキュメント

2. ドキュメントを読んで学習→AskモードでBobに質問

ドキュメントを読み、理解できなかった部分はAskモードで質問します。

<解説を求めるプロンプト>

Bobへの入力
対象ドキュメント: @/course/unit04/section3/user-types.md 
要件: 対象ドキュメントは改変しない
タスク:
C言語を知らない前提で説明してください
Pythonで例えられる場合はPythonに例えても良いです

<Bobによる解説 (一部)>
Bobによる解説.png

3. 演習問題に回答

Bobが作成した演習問題に回答します。

<Bobが作成した演習問題>
Bobが作成した演習問題.png

<自分が書いたコード>

ex03.pli
 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に添削してもらいます。問題点の指摘だけでなく、改善案も提示してくれます。

<演習問題の添削を求めるプロンプト>

Bobへの入力
問題: @/course/unit04/section3/user-types.md 
回答: @/course/unit04/section3/ex03.pli 
タスク:
回答を添削してください

<Bobによるフィードバック (問題点の指摘箇所を抜粋)>
Bobによるフィードバック.png

やってみてわかったこと

良い点

自分専用の日本語資料を作成できる
手間なく自然な日本語のシンプルな資料を作成できたため、ストレスなく学習を進めることができました。

理解度に応じた解説を生成できる
基本的にはシンプルなドキュメントで学習を進め、難しいところは何度でも質問して理解を深めることができました。

実行環境がなくてもコードを書いて学習できる
今回は実行環境を用意できませんでしたが、Bobがコードを添削してくれるため、実際にコードを書きながら知識を定着させることができました。

注意が必要な点

演習問題の作成や添削で誤りが発生することがある
少しでも疑わしいと感じた場合はBobに指摘し、出典となる資料を確認するよう指示することで対処できました。

まとめ

本記事では、Bobを使ったPL/I学習の実例を紹介しました。

<Bobを使ったPL/I学習の要点>

  • 英語資料を自分専用の日本語教材に変換
  • Planモードで体系的かつ自分に最適な学習計画を立案
  • AGENTS.mdによるルールの定義と出力内容の制御
  • Askモードを用いた疑問点の即時解消
  • 実行環境不要の演習とコード添削

この方法はPL/Iの学習にお困りの方はもちろん、
他の言語や分野の学習にも応用できると思います。

皆様もぜひ日々の学びにBobを活用してみてください。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?