Salesforce Developers Japan Blog

Salesforce CLIのオープンソース化に関する最新情報(2021年2月)

オリジナル記事

Open Sourcing Salesforce CLI Update Feb. 2021

 

 

これは、CLIコードの100%オープンソース化に向けたSalesforce CLIチームの進捗状況について詳しく紹介する2つ目のブログ記事です。最初の記事をまだ読んでいない場合、またはもう一度お読みになりたい場合は、こちらをご覧ください。

読み終えると、おそらく2つの質問が思い浮かぶでしょう。「8か月経った。何が起きたのだろうか?」、「その期間にどのような進捗があったのだろうか?」多くのことが起きました。最初のブログ記事の目的は、当時の状況と何を目指しているかを説明することでした。それ以降、CLIチームは、他のエンジニアリングチームがCLIチームのリードに従い、コマンドをオープンソース化するにあたって使用できる容易に拡張可能なフレームワークを作成してきました。フレームワークの開発には、他の開発チームが設定および統合ステップをスキップし、プラグインのコーディングをすぐに開始できるようにするためのプラグインテンプレートおよびCircleCI orbsの作成も含まれました。これらのフレームワークは、すべてをプラグインへと移行するための基盤でした。どのように役立ったかについて後で詳しく説明します。

現状について説明する前に、最初のブログ記事での見通しおよび目標の一部を再確認し、完了に向けた進捗状況を確認しましょう。

確認

最初のブログ記事では、「Salesforce CLIのためのGitHub組織」を作ると予告しました。朗報です。その目標を達成しました!GitHub組織はこちらで参照できます: https://github.com/salesforcecli。この場所に、すべての新しいプラグインorbsテンプレートアグリゲーター監視リポジトリを置きます。何か新しいものを作ったらこの組織に入れておきますので、皆さんに見守っていただき、私たちがどのようにオープンにものを作っているかを見ていただきたいと思います。

現在の問題に関するリポジトリはそのままにしておきhttps://github.com/forcedotcom/cli/issues)、リリースノートを同じリポジトリに移動しましたhttps://github.com/forcedotcom/cli/tree/main/releasenotes)。

salesforce-almプラグインの細部化に集中的に取り組んでいます。このブログ記事の執筆時点で、組織のリポジトリには少なくとも40のオープンソース化されたコマンドがあり、11種類のプラグインにわたっています。当分ペースを落とす予定はありません。このプロセスについては、このブログ記事で詳しく後で説明します。

ステータスに関するリポジトリも作成しましたhttps://github.com/salesforcecli/status)。GitHub組織内の他のリポジトリを監視します。ここで特定のプラグインのバージョン、最終公開日、現在のビルドステータス、CLIおよびそのコンポーネントの全体的な健全性を確認できます。

チームが作成する新しいコードまたはリポジトリは公開されます。今後は100%オープンソース作業に全力を尽くします。

salesforce-almプラグインの細分化

https://github.com/salesforcecliを見ると、過去8か月間に取り組んできた内容がすべてわかります。慣れてからは、新しいプラグインへの移行を迅速に開始しました。各リポジトリはプラグインに対応します。以下は、オープンソース化したプラグインの現在のステータスです。

完了 現在進行中 残り
alias data mdapi
auth source org(パート2)
config org(パート1) packaging
schema project
user communities
limits
apex
templates
custom-metadata
scanner
orb
salesforcedx
cli

一部のプラグインはトップレベルに移動しました。つまり、たとえば、現在はsfdx config:setをsfdx force:config:setの代わりに実行します。この作業をauth、alias、configトピックに対して完了しました。しかし、心配は要りません。それらをエイリアス化したのでforce名前空間でも動作します。つまり、現在のスクリプトが壊れることはありません。ただし、新しいコマンド名の使用をできる限り早く開始することを強くお勧めします。

上記の表から、あらゆるもののオープンソース化に向けて大きく進捗したことがわかります。残念なことに、まだ取り出していないトピックがいくつか残っています。特にsourceです。これらは、最も複雑で、オープンソース化するのに最も長く時間がかかります。これらについて今後1年間で優先順位を付けていきます。

最初のブログ記事では、ますます多くのプラグインをsalesforcedx下、さらにはその外部にも配置すると説明しました。sfdx plugins –coreを実行すると、進捗状況および実行すると明言した内容がどのように実現されたかを確認できます。

リリース中:プラグインとCLI

CLIコードのオープンソース化を開始したとき、CLIのリリース方法も変える必要があると認識していました。mono-repo構造をリリースする代わりに、現在は複数のプラグインの新しいバージョンをリリースします。これらは1つ以上のアグリゲーターによって使用され、その最終結果をリリースします。理論的には、このプロセスは実装が難しすぎるということはありませんが、現実的には、信頼性が高く再利用可能なCircleCI orbを作成するために多くの作業が必要です。現在、開発ブランチからプラグインのリポジトリのメインブランチへのPRマージは、そのプラグインのリリースを自動的に開始します。その後、npm上の新しいバージョンへ自動的に公開および昇格されてから、アグリゲーターの1つの依存関係としてリストされます。ここで、salesforcedxプラグインの依存関係としてリストされているplugin-userプラグインを確認できます。

force名前空間の下にあるすべてのコマンド(force:schema:*など)をsalesforcedxアグリゲーターに配置します。force名前空間の外部のコマンド(plugin-authなど)用のプラグインは、cliリポジトリから直接インクルードされるため、これらのコマンドはsfdx auth:*を使用して実行します。

現在、latest-rcバージョンはnpm経由でのみ利用可能です。テストするには、npm install sfdx-cli@latest-rcを実行します。cliの標準インストール済みバージョンはまだ利用できませんが、近日リリースされます。将来的には、sfdx update stable-rcを実行できるようになります。stable-rcとlatest-rcは同じバージョンを指しますが、latestとlatest-rcはnpmの規則であるため、名前が異なります。そのため、npmベースのインストールにはそれらを使用します。stableとstable-rcはOCLIFの規則です。テスト期間が1週間あります。バグが見つかった場合は、latest-rcタグとバージョン番号を含めてCLIの問題に関するリポジトリへ必ず投稿してください。以下で、latest-rcタグがバージョン7.87.0を指していること、latestタグが7.86.3を指していることがわかります。

近日公開される内容をプレビューし、新機能をテストし、latestへの昇格準備完了を保証できるようにするために、latest-rcタグを提供します。latestに昇格すると、”本稼働”および現行バージョンとなります。CLIチームは、できる限り多くlatest-rcタグを使用することを全員に奨励します。互換性を確保するために、リリースプロセスまたはスクリプトを両方のタグを使用するように更新することをお勧めします。さまざまなCI/CDプラットフォームとそれぞれの設定ファイルについては、https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_ci_org_dev_repos.htmを確認してください。

貢献

目を閉じ、このシナリオを想像してみてください。他のユーザに利益をもたらす機能を考え出す、バグ修正を思い付く、または誰もが気に入る生活の質の改善を思い描く。問題をオープンし、”機能要求”としてマークする代わりに、ソースコードを調べ、自身で取り組むことを奨励します。特定のコマンドが背後でどのように動作するかがわかり、自身のワークフローの最適化に役立つため、良い経験となります。すべてのオープンソースリポジトリへのプルリクエストを受け付けています。PRを作成する場合、CLIチームと密接に連携してイテレーションとレビューを行います。PRがマージおよびリリースされた場合、きっと喜んで新しい機能を使用するでしょう。CLIチームは、外部のコラボレーターがプルリクエストのクローズに成功するのを見て満足します。

スクリプトでいくつかの非常に複雑な条件文やカスタムインタラクションを実行している場合はどうでしょうか?または、コマンド内に配置することで利益をもたらす可能性があるAPIウィザードを実行している場合は?全員が必要とするロジックではありませんが、一部の人にとってはゲームチェンジャーとなります。これをチームまたはコミュニティの他のメンバーが使用できるように容易に配布するにはどうすればよいでしょうか?sfdxプラグインです!幸運なことに、plugin-templateリポジトリがあります。ここには、独自のプラグインのコーディングを開始するために必要なすべてが揃っています。これには、すぐに使えるCircleCI orbs、eslintルール、コミット検証、下位互換性チェック、OCLIFサポートが含まれています。テンプレートは、最新のTypeScriptおよびeslintターゲットを使用するように設定されています。plugin-templateリポジトリは、sfdx plugins:generateコマンドを使用して作成されました。その後、その他のプラグイン用の標準化されたリポジトリを作成するために追加されました。プラグインのパワーを自身で確認したい場合は、エンジニアの1人であるShaneがshane-sfdx-pluginsプラグインを使って作成したものを参照してください。

まとめ

Salesforceからの100%オープンソース化されたCLIの実現に向けて大きく前進しました。いくつかのハードルが残っていますが、現時点で、ハードワークの大半を終えており、今後の道筋は明確です。できる限り多くのコマンドをオープンソース化するまで止まりません。

読者の皆様には、もっと気楽に、バグの修正や新機能の追加に関するプルリクエストを作成し、どのようにリリースされるか、変更が本稼働へ導入されるのをいつ見ることができるかを理解していただければと思います。全員がこれまでの進捗に満足し、今後の取り組みを非常に楽しみにしています。これまで取り組んできた内容をぜひご覧ください。

忘れずに、毎週リリースノートをチェックして、新機能、修正、コメント要求(RFC)(設計プロセスに影響を与えることができます)に関する最新情報を把握してください。

著者紹介

Willie Ruemmeleは、Salesforce CLIチームのエンジニアです。これは、2019年にColorado School of Minesを卒業した後の彼の最初の仕事です。彼はSalesforceでインターンとして働き始め、約1年半前からフルタイムで働いています。働いていないときは、マウンテンバイク、ロッククライミング、サーフィン、スノーボードを楽しんでいます。

コメント

Salesforce CLIのオープンソース化に関する最新情報(2021年2月)