1.はじめに
前回お届けした第11回目の記事では、IBM i を Linux 的に使用するうえで必須となるシェルスクリプトについて解説しました。第12回を始める前に、少し復習をしておきましょう。
シェルスクリプトとは、実行するコマンドをファイルにまとめて保管したものです。プログラミング言語としての基本的な機能を備えており、変数の利用、分岐処理、繰り返し処理などを記述できます。シェルスクリプトを活用することで、バックアップやデータ転送などの日常的な定型業務を自動化でき、誰が実行してもミスなく処理を行うことが可能になります。また、スケジューリング機能を提供する cron を使えば、定期的にスクリプトを実行するよう設定することも可能です。
IBM i のコマンドやプログラムだけでは実装が難しかった処理も、シェルスクリプトを活用することで簡単に実現できると感じた方も多いのではないでしょうか。
さて、「Linux 的な IBM i の使い方」も第 12 回目となり、本記事が連載の最終回となります。
連載開始当初の目的は、Linux や Windows といった他のプラットフォームをご経験の開発者の方々に、Linux の視点を通して IBM i をより深く理解していただくことにありました。IBM i の管理者やエンドユーザーにとって長年親しまれてきた 5250 画面を中心とした環境は、IBM i に初めて触れる方々にとっては見慣れないものであり、扱いづらい印象を与えがちです。そこで、本連載では Linux という視点から IBM i の新たな可能性を示すことを目指しました。
同時に、Linux 的な視点で IBM i を見ることで、IBM i が現代のオープンなシステムとして進化し続けていることを理解していただくことも重要なテーマでした。5250 以外のインターフェースが利用可能であり、他のプラットフォームと比較しても決してレガシー・システムではないことをお伝えできたのではないかと思います。
連載最後の記事では、前回までの内容を以下のグループで振り返ります。
- ssh
- シェルと基本コマンド
- IFS
- OSS
- セキュリティー対策
- ファイル転送
その後、「今後の IBM i について」と題し、私の個人的な見解も交えながら IBM i の将来像について考察します。
今回の記事が、この連載記事を振り返るきっかけとなれば幸いです。
それでは始めていきましょう。
2.振り返り
では、これまでの連載記事を通して解説してきた主要なトピックを振り返り、IBM i をより深く理解するためのかけらを繋ぎ合わせていきましょう。
IBM i をより深く理解するために
第1回の記事では連載の出発点として、IBM i が長年にわたり独自の進化を遂げてきた背景、そして Linux をはじめとするオープンソースの世界との関係について概観しました。IBM i は、System/3 の時代から続く長い歴史を持ち、独自のアーキテクチャーと文化を育んできました。
しかし、2001 年の PASE (Portable Application Solutions Environment) の導入、そして 2014 年以降の RPM (Red Hat Package Manager) と yum (Yellowdog Updater Modified) の採用により、Linux を中心としたオープンソースのエコシステムを積極的に取り込む姿勢を明確にしました。この変化により、IBM i は新たな技術革新の波を迎え、これまで以上に多様なシステムとの連携や最新技術の活用が可能となりました。
ssh(第2回、第7回)
IBM i でオープンソースを利用するうえで、ssh を理解することはとても重要です。
ssh (Secure Shell) は、ネットワークを介して安全にリモート・コンピューターを操作するためのプロトコルです。第2回では、この ssh の重要性を強調しました。従来の 5250 以外の接続方式が IBM i に提供されていることを理解することで、ネイティブ・インターフェースに不慣れな他のプラットフォームの方にとっても、IBM i を利用する際のハードルが大幅に低くなるはずです。
また、5250 接続と比較して、通信経路が常に暗号化される点が ssh の最大の特長であり、クラウド環境や外部システムとの連携が不可欠な現代において、セキュリティーを確保する上でも基本知識として理解しておきたい機能です。
IBM i で ssh を利用するためには、5733SC1 のオプション1(OpenSSH、OpenSSL、ZLIB)を含む必要なライセンス・プログラムが導入されている必要があります。そして、sshd(SSH Daemon)を開始することで、外部からの接続を受け付ける準備が整います。
さらにセキュリティーを強化するために、パスワード認証に代わる公開鍵認証についても詳しく解説しました。公開鍵認証では、秘密鍵と公開鍵のペアを作成し、クライアント側は秘密鍵を、サーバー側は公開鍵を保持します。これにより、パスワードを入力することなく安全にサーバーにログインすることが可能となり、総当たり攻撃などのリスクを大幅に軽減できます。また、~/.ssh/config ファイルを設定することで、接続先のホスト名、ユーザー名、使用する秘密鍵、ポート番号などを事前に定義しておくことができ、より簡便な接続が可能になります。
重要なポイントは、IBM i は ssh のサーバーとクライアント両方の役割を担うことができるということです。しっかり覚えておきましょう。
シェルと基本コマンドによる操作(第3回)
続いて、ssh 接続後に使用するシェルと基本コマンドを理解しましょう。
ssh で IBM i のPASE 環境に接続すると、シェルと呼ばれるコマンドライン・インタプリタを通じてシステムを操作することが可能になります。IBM i では、bsh(Bourne Shell)がデフォルトのシェルとして提供されていますが、ksh(Korn Shell)や bash(GNU Bourne-Again Shell)など、他のシェルも利用可能です。特に bash は、多くの Linux 環境で標準的に使用されており、豊富な機能と使いやすさから推奨されるシェルと言えるでしょう。連載では、OSS 環境の導入を通じて bash を利用可能にする手順も解説しました。
シェルを通じてシステムを操作する上で基本となるのが各種コマンドです。連載では、頻繁に利用する重要なコマンドをいくつか紹介しました。
コマンド | 機能 |
---|---|
cd | カレントディレクトリーの変更 |
ls | ファイルやディレクトリーの一覧表示(-l オプションで詳細情報を表示) |
pwd | 現在の作業ディレクトリーの絶対パスを表示 |
grep/egrep | ファイルの内容等から指定したパターンに一致する行を抽出 |
sed | ファイルの内容の置換、削除、挿入などの処理を行う |
awk | 指定したパターンに基づいてテキストファイル等の処理を行う |
これらのコマンドは、パイプ(|)を用いることで、あるコマンドの出力を別のコマンドの入力として連携させることができます。また、リダイレクト(<, >)を用いることで、コマンドの標準出力や標準入力をファイルに書き出したり、ファイルから読み込んだりすることができます。さらに、system コマンドを使用することで、シェルからIBM i のネイティブな CL(制御言語)コマンドを実行し、その結果をシェル上で利用することも可能です。
IBM i のファイルシステム(IFS) (第3回)
次に重要なのは IBM i のファイルシステムです。
IBM i のファイルの管理においては、ネイティブファイルシステムと IFS(統合ファイルシステム)という2つの概念を理解する必要があります。従来の IBM i では、ライブラリーと呼ばれる特殊な構造でオブジェクト(プログラム、ファイルなど)が管理されてきました。一方、IFS は、Linux や Windows などの他のオペレーティングシステムと同様の階層構造を持つファイルシステムであり、ディレクトリーとファイルで構成されています。
PASE 環境で動作するオープンソースソフトウェアは、この IFS の階層構造を認識します。ネイティブファイルシステム内のオブジェクトは、IFS 上では /QSYS.LIB という特別なディレクトリーの下に、ライブラリー名.LIB/ファイル名.FILE、ライブラリー名.LIB/プログラム名.PGM のような形式で表現されます。
シェルでファイルを操作する際には、パスを用いてファイルの場所を指定します。絶対パスは、ルートディレクトリー / から始まる完全なパスであり、相対パスは、現在の作業ディレクトリー(カレントディレクトリー)からの相対的な位置を示します。現在のカレントディレクトリーを確認するには、pwd コマンドを使用するのでしたね。
オープンソースソフトウェア(OSS)の導入と活用 ( 第4回、 第5回、 第8回、 第9回)
ssh、シェルおよびファイルシステムの次は、いよいよ OSS です。
IBM i におけるオープンソースソフトウェア(OSS)の利用は、IBM i システムの可能性を大きく広げるものです。連載では、RPM(RedHat Package Manager)と yum(Yellowdog Updater Modified)というパッケージ管理システムを中心に、OSS の導入と活用方法を解説しました。
RPM は、パッケージ化されたソフトウェアをインストール、アンインストール、アップグレード、検証するための基本的な仕組みを提供します。一方、yum は、RPM の機能を拡張し、パッケージ間の依存関係を自動的に解決しながら、より簡単にソフトウェアを管理することを可能にします。yum は、リポジトリと呼ばれるソフトウェアパッケージの保管場所を参照し、必要なパッケージをダウンロードしてインストールします。IBM i 向けには、IBM が提供する公式リポジトリ(ibmi-base.repo, ibmi-release.repo)などが用意されています。
連載では、数多くの主要な OSS ツールを紹介し、その活用例を示しました。
- テキスト処理ツール:
- grep:ファイルから特定の文字列パターンを検索し、該当する行を表示
- sed:テキストストリームに対して、置換や削除などの編集操作を実施
- awk:テキストファイルを構造化して処理するための強力なツール
- ファイル操作ツール:
- tar:複数のファイルやディレクトリーを一つのアーカイブファイルにまとめたり、アーカイブファイルを展開
- gzip / unzip:ファイルを gzip 形式で圧縮・解凍。zip コマンドで zip 形式の圧縮ファイルを作成することも可能
- bzip2:より高圧縮率の bzip2 形式でファイルを圧縮・解凍
- p7zip:4 GB を超えるファイルを 7z 形式で圧縮・解凍
- Web 連携ツール:
- curl:様々なプロトコルを用いてデータを転送するコマンドラインツール。Web APIとの連携などに利用
- wget:Web サイトからファイルをダウンロード
- jq:JSON 形式のデータを処理するための軽量かつ柔軟なコマンドラインツール
- データベース接続ツール:
- unixODBC:ODBC (Open Database Connectivity) ドライバーマネージャー
- ibm-iaccess:IBM i のデータベースに ODBC 接続するためのドライバーで、isql コマンドなどを利用して、シェルから SQL を実行
- ファイル転送ツール:
- lftp:FTP や sftp などのプロトコルをサポートする高機能なファイル転送ツール
それぞれの章で、パイプやリダイレクトを使用して、基本コマンドと上記 OSS ツールを連携して使用する例を紹介していますので参考にしてください。
セキュリティー対策(第7回、第10回)
IBM i と外部システムおよびサービスとの連携を行う上で必要な IBM i におけるセキュリティー機能について、OSS の観点からの理解が重要です。
chroot は、特定のプロセスから見えるファイルシステムのルートディレクトリーを変更することで、隔離された実行環境を構築するための仕組みです。これにより、万が一外部からの攻撃を受けた場合でも、被害を最小限に抑えることが期待できます。IBM i 環境で chroot を利用するためには、ibmichroot パッケージをインストールし、chroot_setup コマンドなどで仮想ルートディレクトリーを作成する必要があります。
クライアント認証においては、パスワード認証のリスクを改めて強調し、より安全な公開鍵認証の利用を推奨しました。公開鍵認証は、第三者による不正なログインを防ぐための重要な対策です。
また、syslog は、システムやアプリケーションが出力するログメッセージを収集・管理するための標準的な仕組みです。IBM i においても syslog デーモン (syslogd) を起動し、適切な設定を行うことで、ssh 接続のログなどを一元的に管理し、セキュリティーインシデントの早期発見や原因究明に役立てることができます。syslog.conf などの設定ファイルを通じて、ログの出力先や重要度などを制御できます。
ファイル転送(第6回、第11回)
システム間でのファイル転送は、データ連携の基本です。セキュリティーを重視した IBM i で利用可能なファイル転送プロトコルをしっかり理解しましょう。
- ftp(File Transfer Protocol):
- 歴史のあるプロトコルですが、通信が暗号化されないため機密性の高いデータの転送には不向き
- FTPS(FTP over SSL/TLS):
- ftp にSSL/TLSによる暗号化機能を付加したプロトコルで、安全なファイル転送が可能
- sftp(SSH File Transfer Protocol):
- ssh の暗号化された接続上で動作するファイル転送プロトコルであり、セキュリティーが高く推奨される方法
- scp(Secure Copy):
- ssh を利用してファイルを安全にコピーするコマンドラインツール(ただし、セキュリティー上の懸念も指摘されている)
連載では、それぞれのプロトコルの特徴と使い分け、そしてIBM i での具体的な利用方法を解説しました。特に sftp は、セキュリティーと利便性のバランスが取れており、クラウドサービスとの連携など、現代的なファイル転送の主要な選択肢となります。
さらに、lftp ツールを用いることで、FTP、FTPS、sftp などのプロトコルを用いたファイル転送をより効率的に行う方法を紹介しました。lftp は、ミラーリングや再帰的なダウンロード、ジョブキューイング、そしてスクリプトによる自動化など、高度な機能を提供します。特に、Fix Central からIBM i の累積PTFをダウンロードするような、パスワード認証が必要な大容量ファイルの転送をバッチで行う処理にはとても便利です。
3.今後の IBM i について
オープンな未来へ
オープンソース技術の更なる活用
ここまでの振り返りで紹介したグループ単位で各内容を理解していただければ、IBM i を「Linux 的に」活用するための第一歩は完了です。
IBM i におけるオープンソースソフトウェア(OSS)の活用は、その柔軟性と拡張性においてますます重要な位置を占めていくことでしょう。この連載全体を通して、IBM i が単なるレガシーシステムではなく、先進的なオープンシステムであることはおわかりいただけたと思います。OSS は、IBM i の能力を拡張し、最新の技術トレンドに対応するための鍵となるのです。
他システムとの連携強化
現代の IT 環境において、単一のシステムで全ての業務を完結させることは不可能であり、異なるシステムとの連携は不可欠です。IBM i も例外ではなく、クラウド環境との連携や、Web サービス、API の積極的な利用が今後の重要な方向性となります。
連載では、ssh や sftp といったセキュアな通信プロトコルを利用したファイル転送の方法を紹介しました。これにより、IBM i はオンプレミスの他のシステムはもちろん、クラウド上のサーバーやサービスとも安全にデータを交換することが可能になります。また、curl などのツールを利用することで、Web API を呼び出し、その結果を処理することも容易になります。例えば、JSON 形式のデータを取得し、jq などのツールで解析して IBM i のデータベースに取り込むといった連携も実現可能です。
IBM i が持つ堅牢性や信頼性を維持しつつ、OSS の柔軟性を活用することで、クラウド環境や多様な外部システムとの連携を強化し、新たな価値を生み出すことが期待されます。IBM i 技術者は、これらの連携技術を習得し、システムの全体像を把握した上で、最適な連携方法を設計・実装していくスキルが求められます。
開発環境の進化とモダン化
IBM i の開発環境は、従来の 5250 画面を中心とした環境もサポートしつつ、よりオープンでモダンなツールへと進化しつつあります。Visual Studio Code(VSCode)や git などの普及は、その象徴的な動きと言えるでしょう。VSCode + git 環境では、ソースコードはローカルに保存されますが、IBM i にコードをプッシュするには sftp が利用されます。パスワード認証も公開鍵認証もどちらも利用可能なので、こういった設定を行う上で本連載の内容が理解を助けてくれるはずです。
VSCode には、オープンソースで提供されている Code for IBM i などの拡張機能もあります。第8回の記事で紹介した make と bob を使えば、IBM i 環境での継続的インテグレーション/継続的デリバリー(CI/CD)の実現も夢ではありません。例えば、git で管理されたソースコードの変更をトリガーとして、自動的にビルド、テスト、そして IBM i 環境へのデプロイを実行するといったパイプラインの構築も、OSS ツールを組み合わせることで可能になるのです。
IBM i 技術者が、これらの新しい開発ツールやバージョン管理システム、そして自動化技術を積極的に学び、日々の開発業務に取り入れていくことが、システムの開発効率の向上に繋がります。また、他システムの開発者の方にも、オープンな開発環境が IBM i でも実現できるんだということを理解していただけると思います。
AI ツールの活用
2025年現在、IT 業界に限らず生成 AI のニュースを聞かない日はないほど、日進月歩で AI ツールが進化しています。この連載記事では、IBM i における AI ツールの具体的な活用事例は紹介していませんが、一般的な IT 分野における AI の応用範囲を考慮すると、IBM i においても今後当たり前のように AI 活用が期待されてくるでしょう。
- 業務効率化、自動化へ AI を活用して、定型的な業務プロセスを自動化したり、異常検知を行うなど、運用効率を向上
- IBM i に蓄積された大量の業務データを AI で分析し、ビジネス上の重要な洞察を得ることで、意思決定を支援
- AI を活用して、コードの自動生成を支援したり、テストケースを自動生成することで、開発プロセスを効率化
- AI 機能を外部のクラウドサービスや API 経由で利用し、IBM i の既存アプリケーションと連携
コードの自動生成等については、RPG Code Assistant が 2025 年度中に利用可能になるでしょう。また、クラウドサービスとして AI を利用するには、ssh / curl / SQL などの基礎的な理解が必須です。今後も IBM i 環境で利用可能な AI 関連の OSS やクラウドサービスの情報を収集し、検証していく必要があるでしょう。
IBM i の将来展望
連載「Linux 的な IBM i の使い方」をここまで読んでいただいた皆さんには、IBM i は今も最新技術を取り入れ、進化し続けるプラットフォームであるということをご理解いただけたと思います。「IBM i はレガシーシステムでしかない」という一部の誤解を解き、オープンソース技術やクラウドとの連携を積極的に進めることで、IBM i はこれからも企業の基幹システムとして重要な役割を果たし続けるでしょう。
IBM i 技術者には、これまでの RPG や COBOL の知識に加えて、Linux の基本的な操作、OSS ツールの利用、ネットワークやセキュリティーに関する知識、そしてクラウド連携や API 活用に関するスキルが必須になってきます。この連載の内容をきっかけに新しい技術を積極的に学び、IBM i の新たな可能性を追求していく姿勢が、今後の IBM i 技術者にとって不可欠です。
これからも新しい OSS の情報を常にキャッチアップし、自社のシステムへの適用可能性を検討していってください。新しい用語や概念がこれからもたくさん出てくると思いますが、それらのほとんどは、オープンソース技術をベースに発展していくはずですし、これを理解して活用するためのきっかけはこの連載にあると自負しています。
4. おわりに
「Linux 的な IBM i の使い方」の連載は、今回で終了となります。連載を通じて、私が最もお伝えしたかったのは、IBM i は決して過去の遺産ではなく、現代の IT 環境においても基幹サーバーとして活躍し続ける、先進的でオープンなシステムであるということです。OS/400 時代から受け継がれる安定性と信頼性に加え、Linux 的な操作性や豊富なオープンソースソフトウェア(OSS)を活用することで、IBM i の可能性はさらに広がります。5250 インターフェースの印象が強いかもしれませんが、実際には多様なアプリケーションインターフェースや開発ツールが利用可能であり、他のプラットフォームとの連携も積極的に進められています。
この連載を通して、IBM i に初めて触れる方々にはその魅力を、長年 IBM i を利用されてきた方々には新たな視点や活用方法を提供できたのであれば、これ以上の喜びはありません。
記事の執筆にあたっては、できる限り網羅的に説明することを目標としていましたが、場合によっては説明が不足していた箇所もあったかもしれません。また、紹介したツールも日々進化しているため、一部の内容がすでに古くなっている可能性もあります。連載の記事を参考に試す際には、ぜひ紹介したコマンドやツールの公式ドキュメントを確認し、さらに深く掘り下げてみてください。
記事で取り上げたツールやコマンドの習得には、実際に手を動かして試すことが何よりも重要です。「第3回」で解説したシェルを積極的に活用し、さまざまなコマンドを試してみてください。エラーメッセージを恐れず、その原因を考えることで理解が深まるはずです。
また、「第7回」で触れたクライアント認証(公開鍵認証)やログ管理(syslog)など、セキュリティーに関するポイントを意識しながら作業を進めることも重要です。
本連載には、一度読んだだけでは理解しにくい部分も多々あったかと思います。それはひとえに私の文章力の至らなさによるものですが、どうかご容赦ください。
最後までお付き合いいただき、誠にありがとうございました。「IBM i の Linux 的な使い方」という少しニッチなテーマではありましたが、皆様にとって興味を持てる内容であれば幸いです。読者の皆様のこれからの IBM i との関わりが、この記事をきっかけに少しでも豊かで実り多いものになればこれ以上の喜びはありません。
今後も IBM i の可能性を追求し、皆様にとって有益な情報を発信していきたいと考えています。
またどこかでお会いしましょう!
