DUICUO

オープンソースインタビューシリーズ:Li Lihang - 私のオープンソース参加の旅

[[153831]]

オープンソースコミュニティの活動は、テスト、執筆、翻訳、設計、プロモーション、開発など、多岐にわたります。オープンソースは、自由でオープンなエコシステムとして、世界をより活気に満ちた多様なものにしています。Linux Storyは、中国のオープンソース愛好家へのインタビューシリーズを開始します。中国で最も活発で、重要で、熟練した影響力のあるオープンソース貢献者たちが、それぞれのストーリーを共有し、オープンソースの純粋な精神と、その哲学を一般参加者にも新規参加者にも紹介します。また、コメント欄への投稿や、オープンソースに関するご意見・ご経験の共有も歓迎いたします。

1. あなた自身の経歴(技術的背景、職歴、学歴)と個人的な趣味について紹介していただけますか

華中科技大学機械工学部で学士号を取得しました。コンピュータとプログラミングに強い関心があったため、修士課程ではコンピュータサイエンス学部に編入しました。技術的な面では、当初は組み込み開発、DSP、組み込みLinuxに手を出し、その後1年間ロボット工学のコンテストに参加し、リアルタイムシステムに基づくロボット制御プログラムを開発しました。修士課程では、研究室でコンピュータビジョンに重点を置き、主にアルゴリズム関連の研究を行っていました。

まだ正式には働き始めていませんが、2つのインターンシップを経験しました。1つはオラクルの北京R&Dセンター(旧サンエンジニアリング研究所)で、もう1つはアリババクラウドのアプサラ部門です。これらの経験は、仕事の概要や必要なスキル、同僚との協力や上司との良好な関係を築くための基礎知識を得る上で非常に役立ちました。インターンシップ中のメンターの方々には特に感謝しており、本当に多くのことを教えていただきました。

私の学習経験は、ほとんど独学です。他に方法がありませんでした。学部の専攻はコンピュータサイエンスとはかけ離れていたため、たくさんの文献を読み、周りの人に助けを求めるしかありませんでした。途中で何度も回り道をしたため、今の私のレベルはまだかなり初歩的です!しかし、いくつかの重要な学習テクニックとスキルを習得し、独学への習慣と興味を育むことができたのは、嬉しいことです。

個人的にはスポーツが好きで、主にバスケットボールをやっています。ローラーブレードも少しだけ試したことがあります。それ以外の時間は、読書とプログラミングに時間を費やしています :-) 旅行も大好きで、若いうちにもっと世界を見て回りたいと思っています :-)

2. コミュニティではどのような役割を果たしていますか?また、どのようなオープンソース プロジェクトに参加していますか?

正直に言うと、私がコミュニティに関わってきたのはそれほど長くはありません。大学1年生の時にLinuxに触れ(Ubuntu 8.10の公式ガイドブックから)、オープンソースに魅了されましたが、当時はオープンソースツールをいくつか使う程度でした。オープンソース精神に感銘を受け、オープンソースの活動に貢献したいと考えていました。大学院に進学し、中国科学院オープンソースソフトウェア協会(www.opencas.org)に入会してから、本格的にオープンソースコミュニティと関わり始め、コミュニティの道を歩み始めました。ここで、私たちをオープンソースの殿堂へと導いてくださった当時の会長、李志華氏に特に感謝したいと思います。当初は、オープンソースコミュニティのあらゆる活動(各種ディストリビューションのリリースパーティー、BLUGの集まりなど)に非常に興味を持って参加していました。その後、徐々にオープンソース協会の活動の運営に携わるようになり、大学院2年生の時には会長を務めるまでになりました。会長を務めた 1 年間、私は数多くのオープン ソース アクティビティ (Ubuntu Kylin リリース カンファレンス、Software Freedom Day、PyCon 2013、RMS の Zhesi コミュニティへの旅行など) を企画し、その実行を支援しました。

したがって、コミュニティでは、個人は参加者のような存在であると同時に、特定の活動のアシスタント主催者のような存在となり、オープンソース コミュニティの構築にささやかな努力を捧げます。

オープンソースプロジェクトに関しては、今のところ長年フォローしているプロジェクトはありません。参加した代表的なプロジェクトとしては、KGTP(CSDN Open Source Summer Camp)とJdeRobot(GSoC 2015)があります。

3. オープンソースに初めて触れたのはいつですか?オープンソースに興味を持ったきっかけは何ですか?

オープンソースとの出会いは大学1年生の時、ACMトレーニングチームに所属していた時のことでした。Windowsと比べるとかなり変わったデスクトップシステムを使っていた上級生たちを見ましたが、その使い勝手は素晴らしく、まるでハッカーモードのようでした。これがきっかけでUbuntu 8.10とオープンソースの世界について学ぶ機会となりました。その後、Ubuntuの様々なバージョンを使い、Ubuntu Kylinの初回リリースをホストする機会にも恵まれました。つまり、UbuntuをはじめとするLinuxディストリビューションが、私をオープンソースの世界へと導いてくれたと言っても過言ではありません。ここで、これらのディストリビューションに貢献してくださるすべての方々に敬意を表したいと思います。

4. 収入源は何ですか?オープンソースプロジェクトには通常どれくらいの時間を費やしていますか?また、仕事とオープンソースプロジェクトのバランスはどのように取っていますか?

現在、私は中国科学院自動化研究所の学生で、基本的な生活費は研究所からの奨学金に頼っています。研究室での研究業務は非常に多いため、オープンソースプロジェクトに参加する時間は限られています。しかし、コンピュータビジョン分野には数え切れないほどのオープンソースプロジェクトがあり(有名なOpenCVやPCLがその代表例です)、開発環境は基本的にLinuxです。そのため、研究室での作業をしながら、時折、オープンソースのコンピュータビジョンツールに小さなパッチを提出しています。オープンソースは趣味のようなもので、仕事以外でも積極的に参加しています。現在、多くのオープンソースプロジェクトが商業的に成功しています(OpenStackやDockerなど)。これらのプロジェクトの開発者の多くはフルタイムで働いていますが、これはオープンソースの精神に反するものではありません。むしろ、オープンソース製品の品質をある程度保証できるため、このアプローチは良いことだと考えています。私は余暇に高品質のオープンソース ソフトウェアを開発している人たちを非常に尊敬しており、私自身も将来この分野で働いてみようと考えています。

5. オープンソース プロジェクトに参加するようになったきっかけは何ですか?

オープンソースプロジェクトに積極的に参加する人は、概してプロジェクト自体に真の関心を持っている人だと思います。そうでなければ、無償で参加するはずがありませんし、仮に参加したとしても、真の関心という原動力がなければ、そのような参加を継続することは難しいでしょう。私は個人的にプログラミングとソフトウェア開発が好きで、フリーソフトウェアとオープンソースの精神を深く尊敬しています。そのため、興味のある技術分野やコミュニティを選び、参加することは、私にとってごく自然なことです。

私自身、GSoC 2013からオープンソースプロジェクトに参加し始めました。応募プロセスでは、多くのオープンソースプロジェクトのホームページやWikiを閲覧し、プロジェクトの目標、コミュニティ文化、開発プロセスなどを学びました。最終的には応募に至りませんでしたが、GitHubとGitの魅力に目覚め、オープンソースプロジェクトに参加する喜びを知りました。その後、GitHubにいくつかの小さなプロジェクトを公開しました(ほとんどは手書きのガジェットで実用性は限られていましたが、やりがいと達成感を感じました)。研究室でオープンソースツールを使っていてバグを発見した場合は、通常パッチを提出していました(時間が限られていたり、修正方法がわからない場合は、Issuesを提出していました)。その後、第1回CSDNオープンソースサマーキャンプに参加し、特にKGTPプロジェクトに参加する機会を与えてくださったZhu Hui教授に感謝申し上げます。そして今回、これまでの経験を活かし、GSoC 2015に応募し、JdeRobotプロジェクトに参加することができました。

まとめると、オープンソースコミュニティにはやるべきことがたくさんあります。設計、開発、テスト、ドキュメント作成など、すべてに人材が必要です。私の個人的な経験から言うと、本当に興味のあるプロジェクト、できればやりがいのあるプロジェクトを選ぶことで、より深く関わっているという実感が得られます。そうすることで、コア開発者との綿密なコミュニケーションが可能になり、オープンソースプロジェクトに貢献しながら、自分自身にとっても貴重な学習体験となります。

6. 学習と開発のプロセス中にボトルネックに遭遇しましたか? また、それをどのように克服しましたか?

ボトルネックは誰にでも起こりますが、その深刻さは人それぞれです。私にとって最も困難だったのは、機械工学からコンピュータサイエンスへの移行だったかもしれません。開発を始めた頃は、基礎知識が乏しいと感じていました。多くの概念は知っていたものの、知識は非常にまとまりがなく、体系的な枠組みが欠けていました。そのため、コーディングの方法は分かっていても、なぜコーディングするのかが分からず、表面的で不完全な理解に陥っていました。

この問題を克服するために、私は独学で学ぶ必要がありました。最初はコンピュータサイエンスのコースをすべて独学で受講しようとしましたが、現実的ではないと感じました。そこで、データ構造、アルゴリズム入門、オペレーティングシステム、コンピュータネットワークに関する古典的な書籍に集中して読みました。読書を重ねるうちに、いくつかの学習テクニックも習得できました。今では、開発に関してもそれほど迷うことはありません。基本的に、問題を理解し、分析し、解決するという手順を踏むことができます。

7. 共同開発中に最も楽しいと感じることは何ですか (議論、くだらないコードのコミット、達成感)?

現在の理解に基づくと、答えは「コミュニケーション + 達成感」です。

8. オープンソース プロジェクトに参加したい初心者にアドバイスはありますか?

興味のあるプロジェクトから始め、自分自身で探求してみましょう。質問をしたり、メールを書いたり、バグを報告したり、パッチを提出したりすることをためらわないでください。特に、多くのオープンソースプロジェクトは国際的な開発者によって主導されているため、自信を持って、英語を障壁にしないでください。どんなに簡単な質問でも、遠慮せずに聞いてみてください。恥ずかしがらずに、とにかく挑戦してみてください!

考え方を調整した後は、ESR の「The Art of Asking Questions」(www.catb.org/esr/faqs/smart-questions.html) などのオープン ソース コミュニティの基本的なエチケットを学び、基本的な開発ツールとプロセスに慣れる必要があります。

まとめると、情熱と正しいアプローチが全てです。そして最後に、オープンソースプロジェクトへの参加に興味があるなら、迷わず今すぐ始めましょう!

9. 今後の学習と成長をどのように計画していますか?

いよいよキャリアをスタートさせます。未来には未知のことがたくさんありますが、学びは生涯にわたる探求です。テクノロジーへの情熱を持ち続ける限り、常により高いレベルを目指して努力し続けます。

現状の自分の能力には限界があることは重々承知しています。今後の計画は大きく分けて3つあります。第一に、コンピュータの基礎(オペレーティングシステム、コンパイラの原理、コンピュータネットワークなど)を学び、その根底にある原理を理解すること。第二に、仕事に関連した具体的なスキルを習得し、問題分析・解決能力を向上させること。そして第三に、特定の専門分野で長期にわたって経験を積み、起業の可能性を探ることです。

10. お気に入りのディストリビューションと開発ツールは何ですか?普段システムで実行しているプログラムは何ですか?

最初はいじくり回すのが好きで、1台のコンピューターに5つの異なるディストリビューションをインストールしたいと思っていました。しかし、時が経ち、経験を積むにつれて、問題解決が鍵だと気づきました。そのため、今ではUbuntuを使うことが多くなりました(包括的なソフトウェアパッケージと大規模なコミュニティがあるため、遭遇する多くの問題は既に他の人によって提起され、解決されています)。基本的な開発ツールはVim、GCC、CMakeです。プログラミングには主にC++を使用し、たまにPythonも使います。UbuntuでもmacOSでも、ブラウザとターミナルという2つのプログラムが一般的に必須です。

11. 中国本土がオープンソース コミュニティから受け取るものが、返すものよりも多いという主張について、あなたの意見をお聞かせください。

この主張には、きっと何らかの理由があるはずです。個人的には、議論自体は重要ではないと考えています。重要なのは、中国本土のオープンソースコミュニティの現状を理解し、その欠点を特定し、協力して改善に取り組むことです。オープンソースはすべての人に利益をもたらすものであり、その精神と基本ルールが侵害されない限り、奪うか返すかの相対的な重要性について、あまり懸念する必要はないと思います。世界経済と同様に、地域ごとに状況は異なり、先進地域と発展途上地域の間には大きな違いがあります。オープンソースコミュニティに戻ると、中国本土のオープンソースへの取り組みには、まだ多くの改善の余地があることは否定できません。しかし、多くのコアオープンソースプロジェクト(Linuxカーネル、Hadoopなど)には中国の重要な開発者が関与しており、主要な中国国内のオープンソースコミュニティが積極的にイベントを開催し、これらがグローバルなオープンソースの理念に貢献していることも認識する必要があります。つまり、オープンソースに国境はありません。奪うか返すかという議論に固執しすぎるべきではないと私は考えています。オープンソースの精神と哲学を広め、オープンソース技術を共有し、最終的にはオープンソースを人々の心にさらに深く根付かせることこそが、すべてのオープンソース愛好家が共に注力し、努力すべきことです。

12. 大学のオープンソース コミュニティの上級メンバーとして、中国科学院オープンソース協会の組織化から得た最大の収穫は何ですか?

オープンソースに関してはまだまだ初心者なので、このような称賛を受けるのは正直不相応です。オープンソース協会の活動を運営する中で、オープンソースに情熱を注ぐ方々と出会う機会に恵まれました。オープンソース技術を共有し、共に議論し、オープンソースの概念を広めていくことは、本当に刺激的でした。得られたものといえば、まず同じ志を持つ仲間と出会えたこと、そしてオープンソース活動を通して視野が大きく広がったことです。

13. 中国本土の Linux ディストリビューションにおける最大の欠陥は何だと思いますか?

中国本土のLinuxディストリビューションについては深く調査していないので、欠点を指摘するつもりはありません。ここでは、いくつかの抱負を述べたいと思います。それは、中国風のLinuxディストリビューションを開発するだけでなく、中国本土のLinuxディストリビューションが独自の技術(例えば、新しく効率的で使いやすいデスクトップ環境の開発など)にさらに投資することを奨励することです。

14. オープンソースに対するあなたの本当の愛情を一言で説明してください。

それが本当の愛であるかどうかは分かりませんが、私はオープンソースに情熱を持っています。

15. 最近最も有望なオープンソース プロジェクトは何ですか?

私は個人的にコンピューター ビジョン、クラウド コンピューティング、ロボティクスに興味があり、OpenCV、PCL、ROS、Docker はすべて非常に有望なオープン ソース プロジェクトだと考えています。

16. どこに行けば自分の情報を見つけることができますか (オフライン サロン、カンファレンス、メーリング リスト、GitHub、人気のソーシャル メディア プラットフォーム)?

GitHub: https://github.com/hustcalm

ウェブサイト: http://hustcalm.me