オープンソース プロジェクトの開発から学んだ 6 つの教訓

データサイエンティストの視点

オープンソースは本当に素晴らしい概念です。コミュニティ全体のソース、スキル、知識を束ねることで、単独では作成できなかったツールを作成できます。これらのコラボレーションから生まれるツールは、まさに各部分の合計以上のものです。

その結果、私たちデータサイエンティストは、開発に関与する機会を持ちながら、非常に多くのテクノロジーを推進するこの無料で利用できるソフトウェアを使用しています。

ここ数年、私は幸運にもオープンソースに関わることができ、いくつかのパッケージを開発してメインにする機会がありました。

オープンソースの開発は単なるコーディングではありません

この間、乗り越えなければならないハードルや学ぶべき教訓がたくさんありました。扱いにくい依存関係や API 設計の選択から、ユーザー ベースとのコミュニケーションまで。

作成者、メンテナ、開発者を問わず、オープンソースに取り組むのは非常に困難な作業です。この記事では、この分野での私の経験の一部を共有し、オープンソースの開発を希望する人々に役立つことを願っています。

オープンソース ソフトウェアを作成するときは、通常、自分専用のパッケージを作成することはありません。さまざまな背景を持つあらゆるタイプのユーザーがソフトウェアを使用することになります。適切なドキュメントは、これらのユーザーが作業を開始するのに大いに役立ちます。

ただし、ドキュメントがパッケージの使いやすさに与える影響を過小評価しないでください。これを使用して、複雑なアルゴリズムを説明したり、広範なチュートリアルを提供したり、使用例を示したり、対話型の例を表示したりすることもできます。

特にデータ サイエンス関連のソフトウェアは、複雑なアルゴリズムが含まれる場合、理解するのが困難になることがあります。これらの説明を物語のように扱うことで、より直感的に説明できることがよくあります。

信じてください、良いドキュメントを書くこと自体がスキルです。

もう 1 つの利点は、しっかりとしたドキュメントを作成することで問題に費やす時間が短縮されることです。ドキュメント内で答えが見つかる場合、ユーザーが質問する理由は少なくなります。

方法の概要 キーバート 作品はドキュメントにあります。

ただし、ドキュメントの作成は単に文書を作成するだけではありません。アルゴリズムやソフトウェアを視覚化することは、それを直感的にするのに大いに役立ちます。からかなり多くのことを学ぶことができます ジェイアランマー ドキュメント内でアルゴリズムの原則を視覚化したい場合。彼のビジュアライゼーションは公式にも掲載されました ナンシー ドキュメンテーション!

ユーザー ベース、つまりコミュニティはソフトウェアの重要なコンポーネントです。オープンソースで開発を行っているので、開発に携わってほしいと言えるでしょう。

コミュニティに参加すると、問題やバグを共有するだけでなく、機能のリクエストやさらなる開発のための素晴らしいアイデアも共有するようになります。これらはすべて、何かを作成するのに役立ちます。

オープンソース コミュニティは、まさにその部分の集合体以上のものです

BERTopic の多くのコア機能: オンライントピックモデリング、ユーザーからの要望が多かったので実装されました。その結果、コミュニティは非常に活発になり、問題の検出や新機能の開発に多大な貢献をしてくれました。

コミュニティからの機能リクエストを実装することは大いに役立ちます。ディスカッションの抜粋 こちら.

パッケージが何百万回も使用されるか、数回しか使用されないかにかかわらず、パッケージを作成することは、オープンソース、MLOps、単体テスト、API 設計などについてさらに学ぶ絶好の機会です。私はオープンソース開発におけるこれらのスキルについてさらに学びました。日常の仕事でやるよりも。

コミュニティ自体との交流からも大きな学びの機会が得られます。どのデザインが好きか嫌いかを教えてくれるのは彼らです。場合によっては、数か月の間に同じ問題が何度も発生することがあります。これは、予想していたほどユーザーフレンドリーではなかったので、デザインを再考する必要があることを示しています。

それに加えて、オープンソース プロジェクトの開発により、他の開発者と協力する機会も得られました。

仕事以外で独自のオープンソース プロジェクトに取り組むことには欠点が伴います。私にとって最も重要なことは、パッケージを保守し、質問に答え、ディスカッションに参加するのは非常に大変な作業であるということです。

内発的に動機付けられている場合は間違いなく役立ちますが、すべてを確実にまとめるにはまだかなりの時間がかかります。

幸いなことに、質問に答えたり、ユースケースを紹介したりするときに、コミュニティに目を向けることができます。

ここ数年で、破壊的変更に関してはもう少しリラックスできるようになりました。特に依存関係に関する場合は、できることが非常に多い場合があります。

パッケージがどのくらいの頻度で使用されているかを知ることは、そのパッケージの人気を理解するのに非常に役立ちます。しかし、多くの人は依然として Github のスターを使用して、パッケージを品質と人気と同一視しています。

必ず正しい指標を定義してください。 GitHub のスターは、単に適切なマーケティングによって誇張されることがあります。星の数が多いからといって人気があるわけではありません。

データサイエンティストとして、私たちはまず正確に測定しているものを理解する必要があります。 GitHub スターは、ユーザーがパッケージにスターを付けることにすぎません。それは、彼らがそのソフトウェアを使用したことがある、あるいはそれが実際に動作しているという意味ですらありません。

KeyBERTのダウンロード数。 Github のスターよりもはるかに優れた指標です。

技術的には、私のリポジトリにスターを付けるために千人にお金を払うこともできます。代わりに、ダウンロードやフォークなどのさまざまな統計だけでなく、毎日受け取る問題の数にも焦点を当てています。

たとえば、あなたのパッケージが次の記事で紹介されたら素晴らしいです。 ハッカーニュース ただし、それが継続的に使用されているかどうかはわかりません。

心理学者として、私はパッケージのデザインに重点を置く傾向があります。これにはドキュメントやチュートリアルなどが含まれますが、コードの作成方法にも影響します。

パッケージの使用とインストールが簡単であることを確認することで、導入がはるかに簡単になります。特にモジュール性や透明性などの設計哲学に焦点を当てると、いくつかのパッケージは非常に使いやすくなります。

トピックモデリングのモジュール設計 BERトピック.

新機能を開発する際に心理学者の視点を取り入れることで、何に焦点を当てるべきかをより簡単に知ることができるようになりました。ユーザーは何を求めているのでしょうか?アルゴリズムを説明できるようにコーディングするにはどうすればよいですか?ユーザーが実際にこのパッケージを使用しているのはなぜですか?私のコードの主な欠点は何ですか?

時間をかけて平均的なユーザーを理解することで導入が促進される

上記のすべては、多くの場合、基本的だが重要なルールにつながります。
超シンプルに保つ

個人的には、新しいパッケージのインストールと使用が難しいと感じた場合、それをワークフローに採用する可能性は低くなります。

あなたも私と同じように AI、データ サイエンス、心理学に情熱を持っている場合は、お気軽に私を追加してください。 LinkedIn または私に従ってください Twitter。私のコンテンツの一部は、私のサイトでも見つけることができます。 個人ウェブサイト.

ソースクレジットのない画像はすべて作者が作成したものです

オープンソース プロジェクトの開発から学んだ 6 つの教訓 ソースから再公開 https://towardsdatascience.com/6-lessons-i-learned-from-developing-open-source-projects-4617e26f247c?source=rss—-7f60cf5620c9—4 via https://towardsdatascience.com/feed

<!–

–>

タイムスタンプ:

より多くの ブロックチェーンコンサルタント