Swiftに足りなかったものを作る - スター数13,000超の「Kingfisher」を生み出したonevcatの着想術

画像を取り扱う軽量なSwiftライブラリ「Kingfisher」が獲得したスター数はなんと13,000以上。圧倒的な支持を集めるOSSを作り続けるonevcatさんに、発想の源を聞きました。

Swiftに足りなかったものを作る - スター数13,000超の「Kingfisher」を生み出したonevcatの着想術

初めて作成したリポジトリが獲得したスター数、8,500以上。 ひとつのリポジトリが獲得した最大のスター数、13,000以上。

この数字を叩き出したのが「1人のエンジニア」だと聞けば、多くの方は驚きの声をあげるでしょう。多くの人から支持されるOSSを作るのはもちろん簡単なことではなく、数千、数万というスターを獲得することは、ほとんど“偉業”ともいえる実績です。

この圧倒的な実績を生み出したのは、ドキュメンテーションコメントを簡単に書けるXcodeプラグインVVDocumenter-Xcodeや、画像を扱える軽量なSwiftライブラリKingfisherの作者である王巍(Wei Wang/ 1@onevcatさん。王さんはLINE株式会社でオープンソースプロジェクトであるLINE SDK for iOS Swiftの開発にも携わっており、公私ともにOSSへのコントリビューションを続けています。

なぜ彼は、多くの人に支持されるリポジトリを生み出せるのでしょうか。そのストーリーの裏側には、コーディングを、そしてOSSを愛してやまない1人のエンジニアの素顔がありました。

デビュー作のリポジトリが、累計スター数8,500以上に

──王さんがGitHub上に最初にアップロードしたリポジトリは何でしたか?

 VVDocumenter-Xcodeというプラグインでした。これはXcode用のプラグインで、ソースコードを書いているときにスラッシュを3つ入力すると、ドキュメンテーションコメントを生成できるというものです。

2

▲VVDocumenter-Xcodeによるドキュメンテーションコメント生成

現在のXcodeにはデフォルトでドキュメンテーションコメント生成機能が搭載されていますが、かつてのXcodeにはこの機能がなくコメントを書くのが面倒でした。このプラグインがあれば、コメントを書くのがもっと楽になるだろうと考えたんです。

──デビュー作にもかかわらず、VVDocumenter-Xcodeは爆発的な人気を集めたそうですね。

 GitHub上にリポジトリを公開した後に、VVDocumenter-XcodeをiOS Dev Weeklyの週報に紹介してもらえたんです。それがきっかけとなって、すごい数のスターが付きました。最終的なスター数は8,500以上になっています。その後、Xcode本体にドキュメンテーションコメント機能が追加されたのでプラグインのサポートは終了しましたが、多くの人に使ってもらえるものを作れたのは本当に嬉しかったですね。

3

王巍さん:大学卒業後、中国のスタートアップに入社しキャリアをスタートさせる。面白法人カヤックでUnityチームのリーダーを務めた後、2014年より現職。ObjCCN groupの運営をリードするなど、オープンソースへのコミットメントは幅広い。

──8,500スター以上とは、鮮烈なデビューですね! 王さんはVVDocumenter-Xcodeの後にも、数多くのリポジトリを作成しています。どんなときにライブラリのアイデアを思いつくのですか?

 私は何かのライブラリを開発する際に「他のプログラミング言語やIDEなどには○○という便利な機能があるから、自分が普段使っているプログラミング言語やIDEでも同じ機能を使えないだろうか」というのが発想の起点になることが多いです。要するに、自分が使いたいものを作っているんです。

私が公開しているRainbowというライブラリもそうでした。Node.jsやRubyなどは、コンソールに標準出力やエラー出力を出す際、文字の色を簡単に変更できます。でも、Swiftではできなかったんです。そこで、Swiftでもコンソール出力に色をつけたいと考えたのが、開発のきっかけです。

4

▲Rainbowを使えば、このように色合い豊かなコンソール出力が実現できる。

──そうしたアイデアを思いつくということは、日常的にさまざまなプログラミング言語に触れているのでは?

 確かに、これまで多種多様なプログラミング言語に触れてきました。インターン時代はJavaScriptを書いていましたし、UnityでC#を書いていた時期もあります。iOS開発で用いられるCocoaPodsやfastlaneなどのツールではRubyが必要なので、Rubyも少しだけ書きます。それから、趣味でアプリを作るときには、サーバーサイドの言語はNode.jsを使うことが多いです。

──iOSエンジニアといっても、決してiOS関連のコードだけを書いているわけではないのですね。どんな方法で情報収集やインプットをしていますか?

 先ほども話したiOS Dev Weeklyで、質の高い記事を参考にすることが多いですね。それから、いま人気のリポジトリが確認できるGitHub Trendingもよく活用しています。Trendingに入っているリポジトリの情報が毎日メールで届くので、それをチェックするだけでも勉強になります。良さそうなリポジトリがあったら、「どうすれば同じような機能を実装できるだろうか」と考えることも多いですね。

自分が実現したい処理があるけれどどう書いたらいいかわからないときは、やはり他の人のコードを参考にするのが一番効率が良いです。世界中の優秀なプログラマーの方々が、誰もが閲覧できる場所にソースコードをアップしているわけですから。オープンソースというカルチャーがなければ、開発はたちゆかない時代だな、とよく思いますね。

大人気リポジトリKingfisherリファクタリングの裏側

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く