2024年2月29日 チャーリー・グアリーノ
VS Code用の拡張機能であるCode for IBM i のコントリビューターである、Arcadソフトウェア社のセバスチャン・ジュリアン氏に話を聞きます。
チャーリー・グアリーノ(以下、チャーリーと略記します):
今日は、セバスチャン・ジュリアン氏をお迎えしています。セバスチャンはARCADソフトウェア社でR&D技術アドバイザー兼プロジェクトマネージャーを務めています。加えて、セバスチャンは今年IBMチャンピオンに推薦、選任されました。
セバスチャン・ジュリアン(以下、セバスチャンと略記します):
ありがとう、チャーリー。ここにいることにワクワクしています。
チャーリー:
今日は、VS CodeのCode for IBM i について話をするつもりです。あなたは、このプロジェクトの主要なコントリビューターの一人ですので、具体的な話をしたいと思っています。Code for IBM i で何ができるのかなどの細かな話題に入る前に、このプロジェクトにおけるコントリビューターの役割について話していただけますか?
セバスチャン:
コントリビューターは、このプロジェクトに価値をもたらそうとする人です。Code for IBM i はオープンソースプロジェクトですから、誰でも貢献できます。Code for IBM i に関与しているということは、この素晴らしいプロジェクトに新しいアイデアや新しい機能をもたらすことができることを意味します。実装する価値がある何かを思いついたら、アイデアやコードを投稿して、自分自身で実装して、プロジェクトに追加できます。
チャーリー:
Code for IBM i にコントリビューターとして関わるようになったいきさつを教えてください。
セバスチャン:
1年半前だった思いますが、私はIBMのためのプロジェクトで仕事をする機会があり、Code for IBM i に興味をもちました。なぜなら、それはIBM i の開発者がVS Codeを使えるようにするオープンソース拡張だったからです。私はCode for i が書かれているTypeScript言語を学んでいたので、Code for IBM i の開発に貢献できると思いました。 そこで、私は約6日の小さな貢献から始め、その後、コードの改善やコードの整理を行い、関与を深めて行きました。その後、プロジェクトのコアチームと会い、今や私もコアチームの一員です。
チャーリー:
オープンソースのプロジェクトは、アイデアの提出やコードの提供によって誰でも貢献できますが、必ず「コアチーム」という概念があります。オープンソースのプロジェクトにおける「コアチーム」の存在は、具体的に何を意味するのでしょうか?
セバスチャン:
Code for IBM IBM i の場合、プロジェクトの管理に責任をもつ人々がコアチームにいます。プロジェクトへの貢献は、ある時点でレビューが不可欠です。例えば、コントリビューターが提供したコードを拡張機能に組み込むのか、それとも別のコードを組み込むのかを誰かが決定する必要があります。 このような意思決定を行うのが、私達コアチームなのです。つまり、私達の誰かがレビューやプルリクエストを行うということなのです。
誰かが何かで貢献したいと思ったら、プルリクエストを送信するだけです。私達コアチームはコードをレビューし、拡張機能で通常行っていることに準拠しているかどうかを確認します。レビューの結果に問題が無ければ、私たちはプルリクエストをメインブランチにマージできます。また、課題への返信や質問への回答を行ったり、プロジェクトへの参加と関与を人々に呼びかけるのも私達です。私達は拡張機能のコードを書いていますし、プロジェクトで最も積極的に活動しているので、拡張機能で何ができて何ができないかについて最も良く知っています。
(編集部注)
プルリスクエスト:開発者のローカルリポジトリ内で行われた変更を他の開発者に通知する機能です。これにより、他の開発者が変更内容のレビューを行えるようになります。
マージ:複数のブランチの変更を1つのブランチに統合することです。
チャーリー:
VS Codeを開いたときに、更新のインストール要求、再始動要求、再ロード要求が、非常に頻繁に行われることに気付きました。VS Codeのプロジェクトはとてもダイナミックであり、インストールするべき新しい物が常にあるように見えます。これらは修正なのか、機能強化なのか、それとも様々な物の組み合わせなのでしょうか?
セバスチャン:
それらすべての組み合わせです。
VS Codeは、日中に2度、3度、あるいはマーケットプレースで拡張機能が更新されるたびに、何かを更新したがることがあります。現在、VS Code自体は月に1回自動的に更新されますが、拡張機能は必要な時に随時更新されます。
私達は、バグ修正を行って新しいリリースを公開した直後に別のバグを発見して、直ちに修正してさらに新しいリリースを作って公開したことがあります。私達はGitHubで2~3回ボタンをクリックするだけなので、リリースを作るのは2分程で済みます。リリースの作成後は、私達の代わりにリリースを公開するCI(継続的インテグレーション)/CD(継続的デリバリー)プロセスが実行されるので、拡張機能に問題が見つかった際は、迅速に対応できます。
チャーリー:
コアチームは非常にアジャイルな方法論を採用しているのですね。ところで、VS Codeに馴染みがないIBM i ユーザーがVS CodeとCode for IBM i に関心を持ち、詳しく調べたいと思った場合、何から始めれば良いでしょうか。VS CodeとCode for IBM i を使い始めて実際に活用できるようになるための学習曲線をどう考えれば良いでしょうか。
セバスチャン:
VS CodeとCode for IBM i に慣れるまでにそれほど時間はかからないと思います。IBM i の開発作業の推進力としてVS Codeを使い始めるためにやるべきことは、VS Codeをダウンロードして使用しているPCにインストールすることです。そして、VS Codeの拡張ビューに進み、検索でIBM i 開発者用の拡張パッケージを見つけます。使い始めるために必要な拡張機能は全てグループ化されているので、その拡張パッケージをインストールするだけです。
VS Codeの拡張パッケージは軽量なので、ダウンロードとインストールには、数分を要するだけです。そして、VS Codeを再始動すれば、先に進む準備は完了です。 インストールが完了したら、VS Code内でCode for IBM i を立ち上げて動作させます。新しい接続を作成すれば、先に進む準備は完了です。使い方、フィルターの作成法、オブジェクトの閲覧法やソースメンバーの探し方、さらにはIFSの閲覧方法を調べることができるように、拡張パッケージ内にオンライン文書への直接リンクも用意されています。
チャーリー:
軽量とは興味深いですね。
セバスチャン:
VS Codeはリソースを多くは使いません。さらに、GitHubリポジトリを閲覧している際に、ブラウザー内のコードスペースを開くことができるのです。何が起きるかというと、コードスペースを要求したとき、GitHub.com上の仮想マシンを起動します。この仮想マシンは、VS Codeのインスタンスをブラウザー上で動かします。つまり、VS Codeをブラウザーに直接取り込み、その状態で拡張機能をインストールできるのです。インターネット経由でIBM i に接続できる必要がありますが、ブラウザーでCode for IBM i をインストールしたVS Codeを使い始められることを意味します。
チャーリー:
もう少し、Code for IBM i 自体の詳しい話をしましょう。あなたが開発に取り組んできたいくつかの機能を紹介していただけますか?
セバスチャン:
例えば、私は、IFSエクスプローラーのドラッグ&ドロップ支援機能を実装しました。これは、エクスプローラーを使ってIFSからファイルをダウンロードしたり、IFSにファイルをアップロードできる機能です。つまり、VS Codeを通じてドラッグ&ドロップ操作でファイルやフォルダー、その他何でもIFSからダウンロードしたり、IFSにアップロードできます。
チャーリー:
デスクトップPCから直接ですか?
セバスチャン:
デスクトップPCから直接です。ファイルを選んでそこに置けば、そのファイルはIFSにアップロードされます。ファイルを編成し直す際のドラッグ&ドロップをIFSブラウザ内で使うこともできるので、とても便利です。
他のメンバーの開発成果、メンバーを探している時にソースファイルの内容を素早く閲覧できる機能があります。ベースコードに組み込まれた非常に高速なコンテンツアシスタントのようなものがあり、ソースメンバーを開こうとしたとき、名前を入力し始めるだけでいくつかの候補が表示されます。検索バーに名前を入力するだけで、素早く見つけてくれるので、その場でソースメンバーを開きたい場合にとても便利です。
チャーリー:
私はCLエディターからSQLを直接実行できる機能がお気に入りです。
セバスチャン:
他にも、メインの拡張機能の子拡張機能と言えるものもあります。例えば、プレリリース段階のDb2拡張機能を使用して SQL にアクセスし、VS Codeから直接SQLクエリを実行している人々がいることは知っています。私達はSQLを介して実行されるIBMサービスを使用しているので、Code for IBM i を開発するときに私はこれを使用しています。
チャーリー:
Db2拡張機能にはリファクタリング機能がありますね。
セバスチャン:
あります。ほとんどはRPG拡張機能にあると思います。例えば、新しいプログラムを作成する場合、サイクルの無い新しいRPGプログラムを宣言する際に必要なものを作成するスニペットがあります。「コントロール」+「スペース」を押してメインスニペットを選択するだけで必要なものが全て作成され、すぐにコーディングを開始できます。
チャーリー:
文字通りコードブロック全体が挿入されて、入力を始められますね。
セバスチャン:
ええ、その通りです。メインプロシージャを宣言し、そしてすぐに作業を開始できるように、ソースメンバーの名前を借りてコードブロックに名前を付けます。これらすべてを行う方法を覚える必要はありません。
チャーリー:
VS Codeは拡張機能を使って自分用にカスタマイズするのが一般的だと思います。そして、マーケットプレースには役立つ可能性のある様々な拡張機能があります。これは必須だと思う特定の拡張機能やお勧めの拡張機能はありますか?
セバスチャン:
最初に思い浮かぶのはGitに関するものです。Git用のGitLensという拡張機能があり、これによってコード自体にリンクが作成されます。GitはIBM i でサポートされているので、GitLensもIBM i で利用できます。例えば、GitLensは、Git上でRPGコードを同期させ、特定の行について誰が最近変更したか、その行の履歴やその機能などが確かめられるようにできます。Gitはエディター自体に統合されているので、エディターの外に出ずに履歴確認などが行えます。
チャーリー:
誰もが関心を持つ話題の1つはAIで、VS Codeの内部にはAIに開発を補足させる方法があります。そして、私は特にCopilotについて考えています。Code for IBM iを使って開発している人全員にとってCopilotはどのように役立つでしょうか?
セバスチャン:
最初に思い浮かぶユースケースは、特定のRPG APIを呼び出すコードをCopilotに教えてもらうことです。いつも同じコードを何度も繰り返すとはいえ、プロトタイプとパラメーターの内容を覚えておく必要があります。しかし、覚えておくことは大変です。同じプロシージャーを何度も宣言しても、プロトタイプとパラメーターの内容を思い出すことはなかなかできません。
私は、APIを使用してデータ・キューからエントリーを読み取る方法をいつも忘れてしまいます。そこで、CopilotかChatGPTに、IBM i 上のRPGでこのAPIを呼び出すにはどうすれば良いかを質問します。すると、すぐに使用できるスニペットが出力されるので手間が省けます。
また、RPGで何かを行うための一般的なアイデアを得るために、他のコード行やコードの例を質問しても良いのです。例えば、「テーブルがあり、最初の 5つのエントリーをRPGプログラムに読み込みたい。どのように行えば良いですか?」と質問できます。このようなAIの使い方は、時間を節約するとともに、あまり役に立たないコードを何度も繰り返さずに済むため、日常的に役立ちます。
チャーリー:
AIを使用する際に私が一番気に入っている事の1つは、ブロックコードを強調表示にして、このコードが何をしているのかと問うことです。すると、AIはそのコードが何をしているのかを正確に説明してくれるので非常に魅力的です。
セバスチャン:
そのコードを自分が書いていない場合、とても役に立ちますね。しかも、エディターつまりIDEから出る必要がありません。コードを入力しながら質問できるのです。
チャーリー:
それでは、話をまとめましょう。Code for IBM i のプロジェクトに携わる開発者として、このプロジェクトで一番好きなことは何ですか?
セバスチャン:
私はプロジェクトを取り巻く熱意が大好きです。モチベーションが一番高まるのは、実装した新機能を人々が熱心に使ってくれることと、日常的にツールを使っている時に新機能がもたらす付加価値を実感してくれることです。
また、コアチームと何を実装するべきかについて話し合い、これは良い、これは悪い、こうするべきだという議論をするのは、非常に興味深いものです。コアチームは、何をするべきか、次に注力するべき機能は何かについて興味深い話し合いをしています。この話し合いは楽しく、そして重要なのです。
私にとって、新しい機能を書いて、それがすぐに実現するのを見るのは本当に楽しいです。VS Code に何かを追加するのにそれほど時間はかからないことも、新しいアイデアを迅速に実装できることも気に入っています。
チャーリー:
SEUの様なグリーンスクリーンエディターを使用している人がモダンなツールを使い始めるためのアドバイスはありますか?そのような方々と直接会話する機会があったら何を伝えますか?
セバスチャン:
ためらわないでください。試してみてください、と言いたいです。多くの投資が必要なわけではありませんので、VS Codeは試してみる価値があります。とにかく、VS Codeと拡張機能をインストールして、最新で高速なインターフェースで、どれだけ簡単に作業ができるかを確認していただきたいです。
もちろん、作業によっては、コマンドラインの方が簡単で高速であり、私自身もコマンドラインを使うことを好んでいますが、コーディングに関しては現代的IDEや現代的エディターを使うのが好きです。
SEUが大好きな人もいることは分かっていますが、VS CodeもCode for IBM i も簡潔さを目指しています。拡張機能を使ってみる価値はあるはずなのです。
チャーリー:
現代的なコードを書く、という現在の開発者に求められる要求に対して、SEUは現代的コードを開発するために必要な機能をサポートしていませんよね。
セバスチャン:
その通りです。SEUでは若い開発者に関心を持ってもらうことは困難です。若い開発者に見せる必要があるのは現代的なRPGであり、学校でプログラミングを学ぶために使用するFF RPGやIDEです。
ですから、彼らが新しい仕事を探すときに、誰かがVS Codeでの開発について話しているのを見たら、それがIBM i 向けであろうとなかろうと構わないのです。少なくとも、彼らは自分達が見るものに魅了されるでしょう。そして、彼らが見るものの実体は現代的なIDEつまりVS Code上で動作する現代の言語であるFF RPGなのです。
RPGに取り組んでもらうために、若い人たちを雇った会社を何社か知っていますが、どの会社も新人たちに現代的IDEを与えて、「このコードを変更する必要がある。これに取り組んで」と言っただけでした。新人たちは何も質問しなかったし、バックエンドでIBM i を使用すること、以前はそれがAS/400と呼ばれていたこと等々は伝えませんでした。
数週間後、新人たちはIDEの背後にあるものを知らされましたが、最初に目にしたのはこの現代的なコードだけで、PHPやC++等とそれほど変わらなかったので、RPGを使って仕事をすることを気にしませんでした。
チャーリー:
私達は、VS CodeやCode for IBM i について話してきました。製品そのものについては掘り下げませんでしたが、Code for IBM i のプロジェクトがどのようにサポートされていて、どう機能するかなどについて、多くの良い洞察を得られたと思います。
Code for IBM i を使用する人にとって、あなたのすべての努力の成果は誰の目にも明らかだと思います。このプロジェクトに時間を費やしてくださったことに感謝します。
セバスチャン:
この対談が、人々がVS Codeを使用してCode for IBM i を試してみようという動機付けになることを本当に願っています。
本記事は、TechChannelの許可を得て「An Expanding and Evolving Open-Source Community for IBM i Developers」(2024年2月29日公開)を翻訳し、日本の読者にとって分かりやすくするために一部を更新しています。最新の技術コンテンツを英語でご覧になりたい方は、techchannel.com をご覧ください。