|
【編集後記】2013年7月13日、アリババグループ主催のADC・アリババテクノロジーカーニバルが杭州華僑国際会議展示センターで盛大に開幕しました。私もこのテクノロジーの饗宴を目撃するために会場にいました。アリババテクノロジーカーニバルの「ナイトチャット」セッションでは、@左耳朵疲子、@玉伯也叫射雕、@淘宝鬼脚七、@tinyfool、@池建强が、テクノロジーをはじめとする様々な話題について、刺激的なトークを繰り広げました。会場からは熱狂的な拍手が送られ、まさに素晴らしい時間でした!この記事は、ナイトチャットセッションでYu Bo氏がオープンソース精神について語った内容を要約したものです。それでは、その模様をどうぞご覧ください。 テックカーニバルの「夜の雑談」でオープンソースの話になりました。その時の私の表現は明確で具体的でなかったので、以下に整理しました。
まず、オープンソース精神の最も重要な側面は、利用可能なものを「借りる」という原則です。 これは多くの人が考えていることとは異なります。オープンソースには貢献と犠牲が必要ですが、貢献や犠牲を払う前に、既存のものを理解し、活用することが優先されます。 例えば、フロントエンドエンジニアはテンプレートを頻繁に使用しますが、時に不満が生じて独自のテンプレートエンジンを開発したいと考えることがあります。直接テンプレートエンジンを開発することに問題はありませんが、より良いアプローチとしては、まずオープンソースコミュニティで類似の製品を探すことです。あなたのアイデアを既に実装している人がいないか確認し、実現可能なアイデアとそうでないアイデアを見極めましょう。 体系的かつ綿密な調査を既に行っている専門家でない限り、「純粋な調査」は避けるべきです。「純粋な調査」とは、類似製品を探し、簡単なデモを実行し、それぞれの長所と短所を比較する表を作成することを指します。より初歩的ではありますが効果的なアプローチは、実際に製品を使用することです。例えば、Handlebarsを選択した場合、プロジェクトで実際に使用することで初めて、その長所と短所を真に理解することができます。このような綿密な経験を積めば、MustacheやHoganといった類似のフロントエンドテンプレートエンジンについても大まかな理解が得られるでしょう。 既存のアイデアを採用すると、開発コストを節約できるだけでなく、視野とアイデアが広がり、井の中の蛙のように無知で現状に満足する状態に陥るのを防ぐことができます。 第二に、オープンソースの世界では、リーダーシップよりも参加が重要です。 「必要なものだけを受け取る」というアプローチをとることで、他者をより深く理解できるようになります。このプロセスの中で、感謝の気持ちだけでなく、不満や考えも経験するでしょう。 Alipayをはじめとする多くの企業が、フロントエンドのDOM操作ライブラリとしてjQueryを採用しています。jQueryのAPI設計は素晴らしく、内部実装も非常に洗練されています。これらの素晴らしい点に出会ったら、ぜひ感想を書き留めてください。たとえWeiboへの投稿でも、友人との会話中の何気ない一言でも、これらはすべて参加とポジティブなエネルギーの発信の形です。コミュニティからの称賛は、jQuery開発チームにとって最大の励みです。彼らの粘り強さの多くは、こうした認識から生まれています。 もちろん、jQueryが存在する限り、欠点は避けられません。例えば、`data` APIは変更され、アニメーションは純粋なCSS3メソッドをサポートしていませんし、Sizzleも完璧ではありません。こうした「欠点」、バグ、落とし穴など、どんな問題があっても、良いアイデアや解決策が浮かんだら、コミュニティへのフィードバックを忘れずに提供してください。jQueryには詳細なフィードバックチャネルが用意されており、成熟したオープンソースコミュニティでは一般的に利用可能です。例えば、GitHubでホストされているプロジェクトでは、通常、Issueを通じてアイデアをコミュニティに送信したり、Pull Requestを通じて修正したコードを直接送信したりすることができます。 こうした活動に参加することで、美への理解を深め、感謝の気持ちを育み、社会に貢献することを学ぶことができます。その過程で、多くの場合、スキルは大きく向上します。これは技術的な進歩だけでなく、英語の読み書き能力の向上も含まれます。さらに、対人コミュニケーションに関する貴重な洞察も得られるでしょう。 オープンソースの世界では、利用可能なものを活用することが第一歩ですが、参加することが最も長い道のりです。本当に素晴らしいアイデアと溢れるエネルギーがない限り、独自のプロジェクトを開発することは必須ではありません。そうでなければ、軽々しく始めてはいけません。何の意味も持たず、多くの場合、全く意味がありません。例えばSea.jsの場合、もしRequireJSが私のアドバイスに従っていたら、あるいはFlyScriptの作者が引退していなかったら、Sea.jsは存在しなかったでしょう。物事は自然に起こり、Doubanは土から芽生えます。参加をもっと楽しみ、シンプルかつ自然なままにしましょう。 3 番目に、オープンソースはコミュニティであり、コードはそのコミュニティのほんの一部にすぎません。 コードは重要ですが、オープンソース プロジェクトでは、ソース コードは重要な要素の 1 つにすぎません。 コード以外にも、ドキュメント、テストケース、課題管理、バージョンリリース、アップグレード戦略、書籍、動画などがあります。jQuery、Backbone、AngularJS のような成熟したプロジェクトは、ソースコードだけでなく、コミュニティの存在によって成熟しています。優れたコミュニティとは、Google 検索で十分なリソースが見つかるコミュニティです。優れたコミュニティとは、あなたが遭遇した落とし穴が、多くの場合、他の誰かがすでに経験し、文書化しているコミュニティのことです。 コミュニティの構築は容易ではありません。コアチームの継続的な情熱に加え、タイミング、場所、そして人材も必要です。jQueryはすでに大きなコミュニティを形成していますが、その兄弟分であるYUI3はなかなか本格的に普及しませんでした。2、3年前、私はYUI3の全体的な設計ドキュメントといくつかのコンポーネントの設計ドキュメントを探していました。様々な場所を探し、オリジナルの作者にメールを送ったこともありましたが、それでも必要な情報は見つかりませんでした。しかし、jQueryを使えば、ほぼあらゆる詳細について関連情報や議論を簡単に見つけることができます。 コミュニティを持たないオープンソースプロジェクトは孤立したままで、ソースコードは「自己満足」の域にとどまっています。数年前のKISSYやBaiduのTangramのようなプロジェクトは、私の意見では初期段階に留まり、さらなる発展に苦戦していました。一方、コミュニティを持つオープンソースプロジェクトは、ソースコードに生命を吹き込み、絶えず進化と改善を続けています。その典型例がBackboneです。Backboneの初期コード投稿を今振り返ると、現在の状態と比べると、かなり精彩を欠いていることに気づくでしょう。最も素晴らしいのは、当初は貧弱だったBackboneのコードが、コミュニティの参加、継続的な議論、そしてプルリクエストによって、非常に高品質なコードへと進化したことです。小さなコードスニペットでさえ、物語を語ることができます。私は今でもBackboneのコード変更、特に自分が変更した部分には細心の注意を払っています。他の人が行った変更から多くのことを学んでいます。 Backboneの例は、オープンソースのより良い方法を示しています。優れたアイデアを共有し、初期のコードは基本的な概念を示すだけにとどめ、コミュニティの参加を通じて継続的に進化させ、誰もが開発者になるという方法です。グループの力は個人の力よりもはるかに強力です。sourceforge.netと同様に、オープンソースに対する個人主義的で英雄的なアプローチは時代遅れです。 最後に、知ることは行うよりも簡単です。上記の原則は誰もが理解しているかもしれませんが、真に実践することは自己研鑽の旅です。Sea.jsとAraleは、西湖の心地よい風と砂漠の灼熱の太陽の両方を経験しながら、旅を始めたばかりです。幸いなことに、彼らは自らの選択をした後、距離を恐れていません。 元のソース: https://github.com/lifesinger/lifesinger.github.com/issues/167 |