“サポートしている機能の豊富さを考慮すると、PyCharm はテキストエディターと比較して多くのメリットがあります。Python 開発に関して言えば、PyCharm はリモートデバッグ、コード品質チェック、Docker や Kubernetes などのサードパーティ製ソフトウェアとの連携といった機能の点で間違いなく傑出しています。”
— Swapnil Kulkarni、アクティブテクノロジーコントリビューター、OpenStack
私は 12 年のソフトウェア開発経験があります。これまで 4 年以上にわたって OpenStack コミュニティのコンテナーチームと協業しており、プロジェクト Kolla による OpenStack 開発の完全コンテナー化といった OpenStack のコンテナーエコシステムを活用するための複数のユースケースに取り組んできました。現在は OpenStack 要件チームのコアレビュアーとしても活動しています。
OpenStack は NASA と Rackspace が最初に貢献を行い、オープンソースのクラウドオペレーティングシステムとして誕生しました。これにより、オープンソースのプライベートクラウドを求めていた企業に待望の代替プラットフォームが提供されました。当初はコンピュート(Nova)およびオブジェクトストレージ(Swift)コンポーネントだけでしたが、その後は 250 社以上のアクティブテクノロジーパートナーを獲得して開発者がさまざまな機能に活発に貢献するようになりました。その結果、最終的には実用的なプライベートクラウドのデプロイプラットフォームへと変貌を遂げました。
OpenStack は 187 カ国以上で運用されており、各地に開発者コミュニティと運用拠点があります。ノード数が 1 桁台の小規模な開発クラスターから、数千ノードを擁する大規模なクラスターまでさまざまなユーザーベースが存在します。その中でも、CERN 研究所は最大のものです。
OpenStack エコシステム内のさまざまなプロジェクト、活動、イベントは、OpenStack Foundation によって管理されています。ソースコードは OpenDev リポジトリで管理されているソースコードから GitHub にミラーリングされており、Gerrit を利用してレビューされています。プロジェクトとコミュニティに関する技術的な決定は、コミュニティ全体から公開選挙プロセスを経て選出された有効貢献者が参加する専門委員会によって行われています。
現在、エコシステムで積極的に貢献が行われているプロジェクトは 200 件以上存在します。これらのプロジェクトは、コンピュート、ストレージ、ネットワーキング、QA、開発、セキュリティ、AI/ML などに分類されています。毎週数千件のレビューが寄せられているため、コミュニティは Vexhost のような企業のインフラストラクチャを利用して継続的インテグレーションとジョブのデリバリーを実施しています。
各 OpenStack プロジェクトにコアチームが存在します。チームの規模は貢献者数と寄せられるレビューの数によって異なります。5 名程度の小規模なコアチームの場合もあれば、大規模なプロジェクトグループでは 50 名以上のチームになる場合もあります。各プロジェクトグループは、コミュニティ全体の目標達成というより大きな流れを構成しているものです。また、開発チームとは別に要件や OpenStack のデプロイに関する問題に協力し、集中的に取り組む運用者グループのような専門部会も存在します。さらには、OpenStack ユーザーからフィードバックを募るユーザー委員会と、ユーザー / 開発者 / オペレーター / Foundation 理事会メンバーとを仲介する技術委員会もあります。
OpenStack のコードベースの 95%以上は Python で書かれています。Web 開発に関しては、必要に応じて Django フレームワークを使用しています。
Python の特徴は、何よりも迅速な開発に適していることです。Python を使用すると、他の言語よりもはるかに高速に新機能を開発できます。それだけではなく、配信の容易さも重要です。OpenStack の開発モデルは非常にハイペースであり、技術的な機能が豊富で堅牢なライブラリを備えた言語を要求するサブシステムとの連携が必要になることもしばしばです。このような言語はオブジェクト指向の動的型付け言語である必要があります。Python はこのニーズを 100%満たしています。また、簡潔で読みやすく、理解しやすい言語であることも好まれる理由の一つになっています。
OpenStack チームでは複数種類の Python 開発を行っています。具体的には、各モジュールの API、スケジューリングアルゴリズム、ハイパーバイザー等の各種ハードウェアコンポーネントへのネイティブな呼び出しを行うためのコンポーネント、ストレージサブシステムの開発があります。Python は Django フレームワークと共に Web ダッシュボード開発の各種要件を満たす目的でも使用されています。
OpenStack のような大規模プロジェクトに取り組む際には、複数の内部プロジェクトや外部のサポートコンポーネントに連携ポイントが必要です。単独プロジェクトと複数プロジェクトをまたぐデバッグ、Git/Gerrit との連携、要件管理、リアルタイムデバッグ、Vagrant / Docker / Ansible / Kubernetes などの連携が必要ですが、これらは主な課題の一部に過ぎません。このような要件に対応できる連携ポイントやプラグインを有する PyCharm のようなツールは、開発者が多くの課題を解決するのに間違いなく役立ちます。
サポートしている機能の豊富さを考慮すると、PyCharm はテキストエディターと比較して多くのメリットがあります。Python 開発に関して言えば、PyCharm はリモートデバッグ、コード品質チェック、Docker や Kubernetes などのサードパーティ製ソフトウェアとの連携といった機能の点で間違いなく傑出しています。私のチームで最もよく使用されている PyCharm の機能は、リモートデバッグと Docker との連携です。
PyCharm はほとんどのユーザーに非常に役立っています。プロジェクト全体でコードスタイルを一致させることができ、バージョン管理にも対応しています。多くの開発者はクイックフィックスにも高い利便性を感じており、軽微なバグの修正やコードの再フォーマットにかかる時間を大幅に削減できています。また、デバッグも可能ですので、開発者チームは容易に開発した機能を検証することができます。Gerrit プラグインを使用し、IDE 内でコードレビューを管理することもできます。
私は OpenStack 内で複数のコンテナー化プロジェクトに従事していますが、Docker と連携できる IDE を使用することで作業が非常に楽になっています。まだコンテナー化されていないプロジェクトのコンテナーで追加テストを行うのにも役立っています。
承知しました。私は常に PyCharm だけでなく、要件に応じて JetBrains の製品一式を使用することを友人や同僚に勧めています。先ほど述べたように、初心者でも経験豊富な開発者でもインテリジェントなコードエディター、スマートなコードナビゲーション、Git / Docker 等のサポートツールとの連携機能などは役に立ちます。開発者は業務に必要な支援を行う信頼性の高いツールを使用できるため、開発に集中することもできます。
Swapnil Kulkarni、アクティブテクノロジーコントリビューター、OpenStack
Matt Lucas、RoadBotics 製品部門長
当社は部分的に WebStorm への移行を完了させましたが、その決め手となったのは多数の優れた機能が最初から含まれていることでした。おかげさまですぐに仕事に着手し、余計なサードパーティ製品への依存度を下げることができました。 また、すべてのソフトウェアライセンスが一箇所に集約されているため、開発ツールへのアクセスを管理しやすくなりました。
Garth Gilmour、Instil ラーニング部門長
2020 年 3 月にソーシャルディスタンス制限が導入された際にはバーチャル配信の一環として受講生とオンラインでコラボレーションできるツールが必要になったため、迷うことなく Space を選択しました。
Ben Asher、Autodesk iOS 開発者
Kotlin Multiplatform を使用すると、エンジニアは一つのプラットフォームで新機能の作成とテストを行うことができますし、他のプラットフォームはデータモデルとビジネスロジックをそのプラットフォームの UI に接続するだけでほとんどの基盤を再利用できます。 今では共有コードベースで作業を行っており、プラットフォーム間のコラボレーションが促進されています。