なぜこの連載をはじめるのか
IBM i という OS は、OS/400 の時代から使っているユーザーにとってはとても使いやすくわかりやすいのですが、Linux や Windows のような別プラットフォームの利用者や開発者からみると、まったく正反対の印象を持たれることが多いようです。また、IBM i ユーザーの会社であっても、新しく入った社員の方からは画面が古臭くてびっくりしたなどとマイナスのイメージを持たれてしまうことも多いとか。こういうお話を聞くたびに、悲しい気持ちになってしまいます。でも実際のところ、IBM i は本当に使いにくく古いオペレーティング・システムなのでしょうか。
確かに、インターフェースに関しては、IBM i の管理者・開発者、システムを使用するエンドユーザーともに 5250 画面が主流のところがまだまだ多いと思います。「IBM i 進化論」の第11回にも書きましたが、System/38 の時代も含めると、5250 インターフェースは40数年間使われ続けているわけで、専用端末がソフトウェアによるエミュレーションに変わったとはいえ、40 年前のインターフェースで仕事をしているという事実は変わりません。
しかし、1988年の AS/400 の発表から、現代の Power Systems 上で稼働する IBM i にいたるまで、インターフェースが 5250 のみの提供であれば、レガシーシステム(よくない意味で)と呼ばれても仕方がないとは思いますが、実際はそんなことはないはずです。
他のプラットフォームと同様、アプリケーション・インターフェースは様々なOSで稼働するブラウザや iPad に代表されるタブレット型コンピュータを使用することができますし、システム管理ツールへのブラウザからのアクセスも OS 標準で提供されています。データベースへのアクセスも現在は SQL が主流です。
開発ツールも 5250 画面での開発環境はそのままサポートしつつ、Eclipse ベースのツールや、Visual Studio Code に代表される人気のエディタを使うこともできます。ソースのバージョン管理に git を使用することも当然可能です。言語は RPG や COBOL はもちろんのこと、Java や PHP、Python なども当たり前に利用できます。
先ほど触れた「IBM i 進化論」(2017年に書いたもの)を読み返してみると、その当時も私はまったく同じことを書いていました。あれから7年が経とうとしていますが、IBM i に対する世間のイメージがあまり変わっていないと痛感するのは私だけではないはずです。
そこで、もう一度このマイナスなイメージを払拭するために、iWorld にて連載記事を書かせていただくことになりました。前回の「IBM i 進化論」は対象読者を既存の IBM i ユーザーメインに書きましたが、今回は少し視点を変えて、他のプラットフォームの方にも興味を持っていただけるようにしたいと思います。
連載のタイトルは「Linux 的な IBM i の使い方」。Linux、オープンソースと言った切り口で IBM i を見ていきたいと思います。同じ題材の優秀な記事はたくさんありますが、IBM i を知らない方も、Linux を知らない方もどちらにもわかりやすい説明を心がけていきたいと思います。
この連載の目標
連載は今回から12回に渡ってお届けする予定ですが、最終的な目標は IBM i がレガシーなオペレーティング・システムではないこと、優れたオープン・システムであること、今後ますます重要になってくる他システムとの連携やWebサービスの利用などにも IBM i はすでに十分に対応済であるということを理解してもらうことで、「IBM i は古いコンピュータ」という誤解を解いていくことです。
今までも多くの方が、IBM i に対する「誤解」を解くために Web 記事や講演、ソーシャルメディアでの啓蒙活動など、内外を問わず努力されてきました。そして、多くの IBM i ファンを増やしてきました。にもかかわらず「古臭い」というイメージがなくならない原因のひとつは、稼働しているアプリケーション(基幹システム)の刷新が進んでいないことだと思います。これは「過去の資産の継承」という IBM i の DNA の功罪でもあります。この DNA の本来の目的は、「変えなくても良いものはそのまま使えること」を担保することであり、「時代の変化とともに変えなければならないこと」を変えなくても良いと思わせることではありません。もしかして後者のイメージが「過去の資産の継承」だと思われているとすれば、そう思わせてしまった我々発信者側の責任は大きいと思います。
昨今言われているモダナイゼーションとは、まさにこの「変えなければいけないことを変えましょう」ということであり、単なる「インターフェースを Web 化する」ことではない点はしっかり理解しておきましょう。
さて、基幹システムの変えるべきところを変えるにあたって、その刷新を阻害する要因としてよく言われているのが「担当者の高齢化」であり「RPGの技術者不足」です。その解決策としての IBM の回答が、フリーフォーム RPG であり、他のプラットフォームと同様の開発環境(Rational Developer for i 、Visual Studio Code の利用、Merlin の発表)であり、RPG 以外のオープンな開発言語の提供です。時代の変化に合わせて変えなければいけないことの延長線上にある、間違いなく取り組まなければならないことばかりです。
上図は開発環境のモダナイゼーションの考え方です。IBM i 関連製品だけでなく、様々なオープンソースやクラウド・サービスと連携していくことを表しています。
このように、既存の IBM i 開発者に新しいことを覚えてもらうことはもちろん大事なことですが、同時にこれから IBM i で開発を始める若手の技術者や、他のプラットフォームの技術者に IBM i をよりよく理解してもらう努力も惜しんではなりません。今回の連載は、これを実現する手段として、Linux という視点を通して様々な解説をしていきます。そのため、紹介するインターフェースやソフトウェアやツールなどは、IBM i ユーザーにとっては初めて聞くものも多いと思います。IBM i ユーザー以外の方には、Linux を通してより IBM i を身近に感じていただけると思いますが、IBM i に関する機能については不明な点も出てくると思います。
先ほども書きましたが、IBM i ユーザーにもそうでない方にもより深く IBM i をわかってもらうことが最終目標なので、できる限り(くどく)説明を入れていく予定です。
Linux / Unix / AIX とは何か
では改めて、Linux とは何かについておさらいをしましょう。
すでにご存知の方も多いと思いますが、Linux はリーナス・トーバルズ氏が 1991 年に開発を開始した、フリーなオペレーティング・システムのカーネルのことです。Unix 系のオペレーティング・システムの MINIX に実用的な機能を追加したいという思いから、そのクローンの開発が開始されました。Linux はオープンソース(ソースコードが公開されており、著作権の一部が放棄されているものを指す)なので、カーネルの開発が世界中の技術者によって行われ、さらにそのカーネルを使用した製品も多く世に出ています。カーネルだけではOSとしては十分ではなく、カーネルの機能を使用する様々なソフトウェアがあって初めて利用可能となります。Linux はオープンソースなので、カーネルとソフトウェアを組み合わせるのは誰でも自由にできるのですが、この作業にはかなりの知識と時間、経験が必要であり、個人ではなかなか実現することはできません。そこで、あらかじめオペレーティング・システムとして利用できるようにカーネルとソフトウェアをまとめて配布できるようにしたものを各社が提供しています。これをディストリビューションといいます。
代表的なディストリビューションとして、
- Ubuntu
- RedHat
- Alma
- fedora
- slackware
などがあります。この中でも皆さんにおなじみのディストリビューションは RedHat ではないでしょうか。IBM i の新しい開発環境である Merlin は、Redhat OpenShift 上で稼働する開発環境なので、IBM i 界隈では一番耳にするディストリビューションだと思います。
ちなみに Alma は、もともと RedHat Enterprise Linux と機能的に互換性を持ったディストリビューションとして提供されていた CentOS の派生なので、ほぼ同じように利用可能です。
先ほども触れたように、Linux は厳密にはカーネルのことを指すのですが、広義の意味としてはこのカーネルを使用したディストリビューションの総称として使われることも多いです。今回の連載ではこれ以降、断りのない限り Linux を後者の意味で使用します。
Linux の元になった MINIX は、Unix 系の OS と紹介しましたが、ではこの Unix とはそもそも何なのでしょうか。
Unix は、1960年代にマサチューセッツ工科大学(MIT)やベル研究所などが協同で開発していたオペレーティング・システムで、1970年代初頭に研究機関に使われるようになりました。その後、研究機関以外での利用も行われるようになり、広く世に知られるようになります。また、Unix から派生した様々な OS もこの後出てきます。代表的な商用の OS としては、Solaris、HP-UX、AIX があります。AIX は IBM の Unix OS の名称です。
1990年代になると、インターネットを通じて世界中の開発者が開発を行うことができるようになり、カリフォルニア大学バークレイ校が開発していた BSD から派生した Free-BSD や、先ほど紹介した MINIX をヒントに一から書き直された Linux などが広く使われるようになります。
Windows のネットワーク機能などは BSD のコードが利用されていたり、macOS も BSD からの派生と言われているので、名称は違えど同じ DNA を持った OS ということが言えるかも知れません。
このように、1960年代に産声を上げた Unix の派生が IBM の AIX であり、クローンで開発されたものが Linux で、基本的に同じ系列であるということがおわかりいただけたと思います。
IBM i とは何か
ではここで、IBM i についてもまとめておきましょう。
IBM i は、1988年に発表された S/36 と S/38 の実行環境を持ったオペレーティング・システム OS/400 の最新バージョンです。発表当時は専用のハードウェア AS/400 上で稼働していましたが、CPU も発表当時の Non-RISC から Power PC に代わり、現在は Power Systems 上で稼働しています。ここまではよく言われている歴史ですが、今回はさらにその前史を辿ってみましょう。
IBM i はミネソタ州にある IBM ロチェスターで開発されていますが、ここは 1950年代にパンチカードの製造拠点としてスタートしています。その後1969年に パンチカードを使用した System/3 が発表され、間もなくディスクと端末を接続したモデルが発表されました。これがロチェスター発の初めてのコンピュータとなります。IBM としては1964年にメインフレームとして System/360 を発表していますが、System/3 はそれに比べて低価格で、容易に開発可能な RPGII が利用可能ということから中小企業にとって魅力的なコンピュータとなり、最終的に 25,000台を出荷するほどの大成功を収めました。
いわゆる中小型機(ミッドレンジ)の歴史はここから始まります。System/3 の後継機として、System/32、System/34 および System/36 が発表されました。同時に次世代システムとして System/38 の開発も進められ、1978年に発表されます。その後10年して、AS/400 へとつながっていくわけです。
この歴史を見ておわかりのように、IBM i は元をたどれば1950年代に使われていたパンチカード・マシンにたどり着きます。ロチェスターは小型の特殊用途のビジネスコンピュータには大きな市場があると当時考えていたので、コンピュータの設計思想にもその考えが色濃く残り、現在の IBM i にもそれが受け継がれているのです。
ミネソタ州にある IBM ロチェスターは、マサチューセッツ州にある MIT からおよそ 1,700km(札幌から屋久島までの距離)も離れており、MIT 出身の技術者をロチェスターで採用するのは難しかったそうです。そのため、 Unix 系の知識を持った技術者がおらず、結果的に Unix とはまったく思想が異なる独自設計が 1960年代から進められていました。AS/400 はまさにこの流れの延長に位置するので、Unix 系の他のシステムとは一線を画した独自OSとなったのです。
IBM i と Linux の関係について
これまで見てきた通り、Unix 系OS と IBM i はそれぞれ異なる発展を遂げてきました。
1983年に BSD が、翌 1984年には Linux がそれぞれ TCP/IP プロトコル・スイートに対応し、インターネットを介した相互接続が可能となります。OS/400 のその当時の通信機能といえば 1974年に発表された SNA ですが、実は Unix 系に遅れること 10年後の 1994年(V3)に OS 標準機能としてTCP/IP に対応しました(それまでも追加のライセンス・プログラムとしてサポートはされていました)。
この V3 は新しいファイルシステムとして IFS(統合ファイルシステム)もサポートするという、その後のオープン化に向けた分水嶺となるバージョンとなりました。IFS をサポートすることにより、TCP/IP の各サーバーの実装が可能になり、その後の OSS 対応の道筋をつけたのです。
そしてそれまで独自路線を歩んできた IBM i が、2001年に発表された V5 で AIX のランタイム環境である PASE(Portable Application Solutions Environment)for i のサポートを開始し、オープン化の基本対応が完了します。Linux 系アプリケーションの実行環境の PASE、そのアプリケーションが必要とするファイルシステムとして IFS、さらに他のシステムと通信する標準プロトコル TCP/IP をサポートすることで、IBM i は真の意味でオープンなシステムとなったのです。
もちろん System/3 から繋がる使いやすい OS の系譜は変わりません。それまで使われてきた基幹システムの開発・保守はそのまま稼働させつつ、オープン・システムとなったのです。
ただし、いわゆるオープンソース・テクノロジーを利用するためにはさらに13年を待つことになります。2014年、代表的なオープンソース・アプリケーションをサポートするために、5733-OPS ライセンスプログラムが提供されました。このライセンスを導入することにより、以下のソフトウェアが IBM i で実行可能となりました。
オプション | 機能 | 説明 |
---|---|---|
1 | Node.js v0 (deprecated) | 言語 |
2 | Python 3.4 | 言語 |
3 | Chroot with gcc | ツール, |
4 | Python 2.7 | 言語 |
5 | Node.js v4 | ツール |
6 | git | バージョン管理 |
7 | tools | ツール |
8 | Eclipse Orion | 開発環境 |
9 | Cloud-Init for i | ツール |
10 | Node.js v6 | 言語 |
11 | Nginx | Webサーバー |
上記アプリケーションは、いずれも Linux 環境において実行可能なもので、オープン系ではおなじみのものばかりです。
しかし、このライセンス・プログラムも 2019年12月をもってサポートが終了となりました。せっかくのオープンソース・プログラムなのに、導入手段としては IBM i 独自の方法しかないのは使い勝手が悪く、新しいソフトウェアをタイムリーに提供できないとの判断からでしょう。これに変わって採用されたのは、Redhat のアプリケーション・パッケージ管理である RPM(RedHat Package Manager)と各パッケージの依存関係を解決して導入を実施してくれる yum(Yellowdog Updater Modified) です。IBM i 上で実行するオープンソース・アプリケーションは、今後 RPM/yum で導入および管理が行われます。
この RPM/yum のサポートで IBM i のオープンソース対応は、Redhat 系 Linux OSと何ら変わらない管理方法ができるようになりました。もちろん、アプリケーションは PASE 環境で実行されるので、Linux のバイナリーをそのまま持ってくることはできず、AIX 用にポーティング(移植)が必要です。しかし、現在では代表的なものはほぼ RPM がアクセスするリポジトリに揃ってきていますし、今後も IBM や各社がそれぞれのリポジトリにポーティングしたバイナリを用意していくことでしょう。
今後の連載内容について
さて、ここまでの説明で、IBM i ユーザーの方は初めて聞くアプリケーション名や単語がたくさんでてきて驚かれた方もいらっしゃると思います。あるいは、色んなところで見聞きするけれど、実際はどういうものなのか、何ができるのかなど今ひとつわかってないというものも含まれていたと思います。
例えば PASE 環境とか、RPM/yum、オープンソースなどです。もしかすると IFS もよく聞くが説明しろと言われると今ひとつ自信がないという感じかもしれません。
でも心配しないでください。今回の連載はこういった疑問をひとつひとつ解決していくことも目的の一つです。次回以降で、上記環境やツールなどを含めて、以下のことについて深く掘り下げて解説をしていきたいと思います。
- ssh
- シェル
- 基本コマンド
- grep / sed / awk
- IFS
- パーミッション
- PASE 環境
- RPM / yum
- OSS
- scp / sftp
- syslog
- chroot
これらはまだ順不同ですが、単なる機能の解説だけにとどまらず、実際に IBM i でどのように利用するのか、これにより何が解決できるのかなども併せて解説していく予定です。
繰り返しになりますが、この連載の目的は Linux という視点を通して IBM i をより深く理解することです。レガシーではない新たなインターフェースを学び、他のプラットフォームからみても決してレガシー・システムではないことを理解していただけるよう進めていきたいと思います。
IBM i を知らない他のユーザーの方は、おそらく普段使い慣れているツールが IBM i でも利用可能なことに驚かれることでしょう。さらに Linux というフィルターを通すことにより、IBM i をより深く理解できたり、またわからない部分もはっきりしてくるのではと期待しています。
「IBM i は古い」といったイメージを少しでも払拭する一助になるよう、内容を充実していきたいと思いますのでご期待ください!
次回は、ssh を取り上げます。IBM i での構成方法や開始方法、接続の仕方など基本的なところから解説してきます。
参考文献
FRANK G. SOLTIS(1997).『Insode the AS/400 / by Frank Soltis. – 2nd ed.』. DUKE PRESS
IBM(2019).『5733-OPS Open Source software support statement』.
https://www.ibm.com/support/pages/5733-ops-open-source-software-support-statement
LPI-JAPAN. 『第2回ディストリビューションとは』. Linux道場入門編 .
https://lpi.or.jp/lpic_all/linux/intro/intro02.shtml
ウィキペディア.『Berkeley Software Distribution』.
https://lpi.or.jp/lpic_all/linux/intro/intro02.shtml
ウィキペディア.『UNIX System V』.
https://ja.wikipedia.org/wiki/UNIX_System_V
ウィキペディア.『インターネット・プロトコル・スイート』.
https://ja.wikipedia.org/wiki/インターネット・プロトコル・スイート