2022年6月16日(木曜日) 7読了時間:数分

こんにちは世界、こんにちはPostman

こんにちは!ジュリアン・バーマンです。

JSON Schemaをご利用の方なら、人気のPython実装の作者としてご存知かもしれません。JSON Schema仕様の実装者であれば、クロス言語JSON Schemaテストスイートの主要なメンテナとしてご存知かもしれません。

JSON Schemaコミュニティに朗報があります。

簡単に言うと、Postmanのオープンテクノロジーチームにジョインし、JSON Schemaに専念することになりました。JSON Schema仕様のリードであるBen Huttonを含む、エコシステムからの多くの人々とチームを組むことになります。これにより、JSON Schemaにフルタイムで取り組む人の数は2人(そして増え続けています!)になります。

これは何を意味するのでしょうか?主に私にとっては、JSON Schemaに多くの時間を割くことができ、テストスイート、私の実装、新しい実装など、長年必要とされていた改善を期待できるということです。コミュニティをさらに拡大し、より緊密に連携していきたいと考えています。

それについて詳しく説明する前に、私がここに至るまでの道のりを皆さんに共有したいと思います。楽しい道のりでした。

はじめに

JSON Schemaとの関わりは10年以上前の2011年に始まりました。当時、今は忘れ去られたウェブプロジェクトに取り組んでおり、検証レイヤーが必要でした。そこで、JSON Schemaがそのニーズを満たすものとして見つかりました。プログラミングの世界ではよくあることですが、サイドプロジェクトがメインプロジェクトになり、ウェブアプリケーションは忘れ去られました。何をするものだったかも覚えていません。

Pythonのjsonschemaプロジェクトへの最初の公開コミットは、その年の12月でした。

当時、Python実装を作成したのは、すでに存在していなかったからではありません。反対に、2011年当時、既に1つか2つは存在していました。私の実装は、偶然から生まれたものです。当時、開発者として成長しており、良いコードとはどのようなものかについての意見を形成し始めていました(時には過度に強い意見を持っていました)。既存の実装で仕様の不一致を発見したため、「自分自身のもの」として作成し、メンテナとして学ぶための衝動に駆られました。

すぐに私の実装が他のプロジェクトで使用されるようになり、それらのプロジェクトから課題、リクエスト、感謝、フィードバックが届くようになりました。他の人々が私の仕事を評価してくれたことは、努力を続けるための大きなモチベーションとなりました。

テストスイート

小さなPythonライブラリを作成した直後、JSON Schemaの実装者向けの公式な言語非依存のテストスイートとなるものを開始しました。しばらくの間、スイートに取り組み続け、私と同じことをする人々、つまりJSON Schemaの仕様に準拠した実装を作成する人々にとって、作業を容易にすることを願っていました。

当時、私が発見した実装はそれぞれ、不完全で内部的なテストスイートを複製していました。努力を集中化し、ライブラリを作成する際に、「既知の」一連のテストを実行して、ライブラリが期待通りに動作し、仕様に準拠しているかどうかを確認できる方法を提供することは、非常に有益であるように思えました。

当初、テストスイートは決して「公式」ではありませんでした。私は仕様自体で行われている作業と全く関係なく、自分のアカウントから作業していました。しかしながら、当時仕様チームのメンバーが親切にも連絡を取り、テストスイートをJSON Schema組織内に取り込み、継続して保守することを依頼しました。そのようなことに興味があることは驚かなかったのですが、役立つものを作り上げたことに誇りを感じました。

私はJSON Schemaで新しい機能を推進したことはありません。私の役割は、むしろ通訳者のようなもので、記述された内容を取り上げ、テストスイートを使用して極端なケースを明らかにすることでした。当初から、テストスイートは仕様に変更を加えるための手段ではなく、仕様が既に規定している内容の表現にすぎないと確信していました。そうすることで、(スイートと仕様自体の両方の)成功にとって不可欠でした。仕様は決して完璧ではなく、現在もJSON Schemaの仕様は改善と反復が続けられています。それにもかかわらず、テストスイートは実装者に仕様の内容に関する共通の理解を与え(改善方法についての議論を他の場所で続けることができます)、仕様の改善に役立っています。

振り返りと感謝

私はJSON Schema全体に多大な恩義を感じています。それはこれまでの私のプログラミングキャリアにおいて長く寄り添ってきており、その周辺の断片を維持する必要性を通して多くのことを学びました。広く使用されているライブラリを維持することは、常に簡単ではありません。JSON Schemaは、これらの筋肉を鍛える方法を与えてくれました。時には、私の(長い)関心のリストの上位または下位に移動しましたが、完全に外れたことはありません。10年以上、私の意識のどこかにありました。

世界中を離れて座っている開発者と偶然の出会いがありました。私たち両方が知らなかったのですが、リリースによって彼らの内部システムに障害を引き起こしていました(注:依存関係を固定してください!)。幸いにも、その時点では、その偶然に笑顔で対応することができました。

尊敬できるオープンソースプロジェクトのメンテナから、私のライブラリを使用している、または偶然出会った際に感謝の言葉を伝える、予期せぬメールが届くのは楽しいものでした。政府の印章が押された重要な文書で、私が思いつきで書いたライブラリの使い方について説明しているものを見つけたことがあり、思わず面白く思いました。

今後の展望

そして、誇りを持って、JSON Schemaが私の日々の活動でより大きな役割を果たす時が来ました。営利企業への参加には、当然ながらオープンソースプロジェクトの方向に不当な影響を与えることへの懸念があります。しかし、Postmanはこれまで、JSON Schema、より広範なオープンソース、そしてもちろん私自身に対しても、非常に寛大な支援者でした。当初の迷いはすぐに消え、感謝の気持ちに変わるでしょう。ここで学ぶことのできる、そして交流できる多くの知識豊富な人々がいます。これは非常に貴重な経験になるでしょう。

JSON Schemaに関する作業に関しては、過去数年間、特にテストスイートに関して、取り組みたいことがたくさんありましたが、それに専念する時間がありませんでした。スイートを強化することで、JSON Schemaの使用をさらに拡大できる可能性があります。メンテナとして恥ずかしいと思うことがいくつかあります。プロジェクトは時折メンテナを恥ずかしがらせます。非常に遅いプルリクエストキューは、そのリストの上位に位置しています。コントリビューターの方々には、プルリクエストが停滞していた場合、心からお詫び申し上げます。これは、すぐに修正することを目指すことの1つです。もちろん、非常に誇りに思っていることがたくさんあり、それを続けたいと思っています。

長年にわたり、カンファレンスやミートアップでJSON Schemaについて講演したり、実装やテストスイートの範囲を超えて発言したりすることがありました。今後は、両方を増やし、より良いものにしていきたいと考えています。

そして私自身よりも広く、私たちはさらに大きな夢を持っています。ブログ、イシュートラッカー、組織全体のディスカッションボードで詳細をお知らせします。

皆様のご協力をお願いします!ユーザー、仕様の実装者、またはオブザーバーとしての皆様からのフィードバックは、JSON Schemaの発展に非常に役立ちます。ぜひ、Ben、私自身、またはJSON Schemaの貢献者である他の素晴らしい方々までご連絡ください。もしくは、JSON Schema Slackをご利用ください。皆様からのフィードバック、実現して欲しい機能、建設的な批判、コミュニティの発展に関するご意見など、喜んでお伺いいたします。

特に、私のライブラリまたはテストスイートに依存しているオープンソースのメンテナの方は、まだ知り合いではない場合はぜひ自己紹介をお願いします!どちらについても、皆様にとってより良いものにするために、ご意見をお聞かせいただければ幸いです。

これまでのご協力に感謝いたします!

表紙写真はJim Kalligas氏によるUnsplashからのものです。