オレオレ神関数のOSS化で人生が変わった。pdfme開発者 kyoheiさんがOSS活動に取り組む理由

OSSは現代のテクノロジーを支える重要な柱です。しかし、そのコード一行一行の背後には、開発者の試行錯誤やひらめきがあり、それが多くのサービスや機能を支えています。

今回お話を伺ったのは、多くの開発者を悩ませるというPDF生成の課題に立ち向かい、ユーザーフレンドリーなライブラリ「pdfme」を開発したkyoheiさん(@labelmake)。個人用途のツールから生まれたpdfmeが、いかにして世界中で利用されるライブラリへと成長したのか。その開発の舞台裏、そしてOSSにかける情熱をお伺いしました。

pdfme開発のきっかけとなった“神関数”

――kyoheiさんのプログラミングとの出会いについて教えてください。

kyohei 大学2年生の時ですね。私は商学部だったんですが、スティーブ・ジョブズの伝記を読んだのがきっかけでパソコンに興味を持ちました。

はじめてプログラミングに触れたのもその頃です。HTMLを書いてFTPサーバーに自分のサイトをアップロードするという授業が最初のプログラミング体験でした。

その後、もともとやっていた音楽活動のために上京して、レコーディングを自分でできるようにとMacを手に入れました。SEO業者でアルバイトをしたり、自分でギターを弾いてお店のプロモーション動画を作ったり。Illustratorを使って食品ラベルを作ったりもしていました。幅広いクリエイティブ業務に携わっていましたね。

その後就職して、システムエンジニアとしてJavaを書く仕事を始めました。

――pdfmeの前身となるlabelmake.jpはどのように誕生したのですか?

labelmake.jp

kyohei 会社員になる前から、副業でDVD制作をしていたんです。ある時、DVDを郵送するためのレターパックに宛名を大量に印刷する必要があり、自分で使うためのソフトウェアとして宛名作成ツールを開発しました。

そのツールを勉強も兼ねてWebサービス「labelmake.jp」として公開したものの、仕事で忙しくてしばらく放置していたんです。ですが、ある日Googleアナリティクスを見たらアクセスが大きく増えていることに気づきました。それをきっかけに、サービスの拡充や収益化に向けた取り組みをはじめました。

――具体的にはどんな取り組みを行いましたか?

kyohei レターパック専用の入力を受け取ったらPDFを返すという関数の抽象化に成功し、いろいろなテンプレートを量産できるようになりました。そこで、封筒の各種サイズや宛名ラベルシールなど、さまざまなテンプレートを追加していきました。

最初の1〜2年は無料で提供していたんですが、アクセス数が増えてきたのでAdSenseを導入。さらに、ネットショップやフリマアプリとの連携機能を強化し、サブスクリプション型のビジネスモデルも導入しました。今では月に70万円ほどの収入になっています。

――labelmake.jpは収益化に成功しているのですね。では、OSSのPDF生成ライブラリpdfme誕生の背景を教えてください。

kyohei もともと、labelmake.jp開発の過程でPDF生成関数の抽象化に取り組んでいました。その過程で、「これがあれば、あらゆるPDFは理論上作成可能だ」と感じる“神関数”ができたんです。

個人開発にしてはよく出来すぎている関数だし、自分1人で使うのはもったいない。そう思って世界に向けて公開することにしました。それがpdfmeの原型です。

pdfmeの元になったライブラリ(2020年2月27日作成)

――PDFを扱う開発には特有の難しさがあると聞きました。

kyohei PDFは、ソフトウェア開発者ができれば避けたい領域なんです(笑)。たとえば、日本人開発者が確実に通るのは日本語フォントの文字化け。サーバー自体にフォントをインストールしないと日本語が表示できなかったり、Webでは当たり前にできることができなかったりします。

他にも、Webページでは画面の左上を基準点(X=0, Y=0)として要素の位置を決めますが、PDFでは紙面の左下が基準点になります。このため、Webと同じ感覚で座標を計算して配置しようとすると、「 思っていた場所と違う」となりがちです。

さらに、PDFで主に使われる長さの単位は「ポイント」で、Webで一般的な「ピクセル」や日常で使う「ミリメートル」とは異なります。なので、このくらいの大きさかな、とピクセル単位のイメージで指定したり、定規で測った長さで配置しようとしても、PDF上では意図した通りの見た目や位置にならないんです。

そこで、pdfmeでは、ユーザーが慣れ親しんでいる単位や座標系を内部で変換して直感的に扱えるように、とにかくWeb開発者の視点で使いやすさを追求しました。

開発者がPDFを避けて通りたいと思うからこそ、少しでも良いライブラリを提供したいという思いが原動力になっています。

pdfme

プレイグラウンド

成長の要因はマーケティング観点での差別化

――pdfmeのもとになったのは、labelmake.jpから切り出した“神関数”だったんですね。

kyohei はい。最初はlabelmakeとしてGitHub上に公開しました。ですが、PDFを出力するライブラリである以上、検索性を考えると名前に「PDF」が入っていないとダメでは? と考えたんです。

そこで、「labelmake」から「pdfme」へとリブランディングを行いました。思い切ってpdfme.comというドメインをブローカーから約60万円で購入しました。リブランディング後、GitHubのスター数が急増し、数か月で以前のlabelmake時代の数を上回りました。その後もpdfmeは着実に成長を続けています。

――成功の要因は何だと思いますか?

kyohei マーケティングがうまくいったことと、ネーミングが良かったことですね。

pdfmeを発表する前に、Dev.toというソフトウェア開発者向けのオンラインコミュニティプラットフォームで、PDFに関するまとめ記事を書いたんです。この記事が予想以上に読まれて、「この記事を買わせてくれ」とか「この記事に自分のサービスを載せてくれ」という話が3、4件も来ました。

当時は「JavaScript PDF」と検索すると私の記事が一番上に出ていたので、pdfmeをリリースした後、その記事のトップにpdfmeの紹介文を追加しました。これがpdfmeを知らせる効果として非常に大きかったですね。

――技術的な完成度だけでなく、マーケティングの視点も重要だったんですね。

kyohei おそらくpdfmeと同じようなソフトウェアを書ける人はたくさんいると思います。でも実際に使われるかどうかは、集客やネーミングに大きく左右される。

いいソフトウェアであることは大前提として必要ですが、それだけでは差別化が難しいです。無料かつMITライセンスで使えることも後押しになっていますが、集客に成功したことが他のライブラリと差をつけた大きな要因だと思います。

――pdfmeの設計思想についても教えてください。

kyohei pdfmeは、PDFライブラリの中で最もユーザーフレンドリーなものを目指しています。PDF生成というタスクを、現代的なWeb開発のアプローチで、より多くの人にとってアクセスしやすく、効率的なものにしたいんです。

それと関連して、より多くのユーザーの要望を満たすため、拡張性を高める重要な決断もしています。あるヨーロッパのユーザーから「PDFにGoogleマップを埋め込みたい」という要望をもらったときのことです。

この機能をライブラリのコア部分に組み込むべきか非常に悩みました。というのも、ユーザーの多様な要望をすべて満たしたいという気持ちはあるものの、当時の開発・管理体制は私1人だけ。メンテナンスしなければならないコードは極力最小限に抑えたかったという事情がありました。

この課題を解決するために、プラグインシステムを導入しました。jQueryやESLintといった有名なライブラリのプラグイン機構を参考にして、独自のプラグインシステムを実装したんです。

この仕組みによって、pdfmeのコア部分を肥大化させることなく、ユーザーが必要とするさまざまな機能を後から追加できるようになりました。Googleマップのような特殊な要素もプラグインとして実装できるため、メインのライブラリはシンプルに保ちながら、機能の拡張性も確保できました。

――現在のpdfmeの利用状況を教えてください。

kyohei npmの週間ダウンロード数を見ると、週に約10万ダウンロードあります(※)。

※複数のパッケージをすべて合わせたダウンロード数

成長のペースはじわじわと伸びている状況。AIライブラリのように一夜にして爆発的に広がるようなものではなく、細く長く続けています。ユーザー数は正確には把握できませんが、数百、あるいは千を超えるユーザーに使われているのではないかと思います。

OSSならday1からグローバルの土俵に上がれる

――pdfmeを商用サービスではなく、OSSとして公開した理由をおしえてください。

kyohei 先ほどもお話ししたように、自分1人で使うのがもったいないと感じたからです。世界中で多くの人が似たようなものを作っていると思うんですが、そのほとんどが共有されないままになっている。抜け穴を見つけた感じがしました。

ソフトウェアの特性として「1個作っても100個作っても同じ」なので、どうせ作るなら多くの人に使ってもらったほうがいいですよね。そこでライブラリとして公開することを決めました。

あとは、自分が書いたコードが世界中で使われていることを夢見ていましたし、漠然とOSS開発者に対する憧れがありました。

――実際にOSSとして公開してみて、どのような手応えを感じましたか?

kyohei GitHubのスター数やnpmの週間ダウンロード数を指標にしているんですが、両方とも伸びていくにつれて手応えを感じています。「pdfmeはもう自分だけのソフトウェアじゃないんだな」という感覚がありますね。

――OSSとして公開することのメリットについて教えてください。

kyohei 最大のメリットは、公開1日目からグローバルの土俵に上がれることです。作者が誰であろうが、年齢、性別、学歴に関係なく、良いソフトウェアは世界中の人が使ってくれる可能性を秘めている。そこがOSSの特別なところだと思います。

また、世界中のユーザーと交流できるのは大きなメリットですね。先日、ドイツのユーザーが日本に来たので一緒に食事をしました。pdfmeのユーザーと直接会ったのは初めてで、とても嬉しかったです。

仕事の依頼をいただくこともあります。日本企業からの依頼もありますが、ほとんどが海外企業からです。クライアントは「このライブラリについて最も詳しい人に実装してほしい」と考えているので、pdfmeの作者である私に依頼が来ます。

私はOSSがきっかけで自信がつき、もっと世界を舞台に開発者として挑戦がしたいと思い、社会人5年目くらいから英語の勉強を開始しました。

私はOSSがきっかけで人生が変わったと思っています。
海外から自分に会いにきてくれる方が現れたり、仕事の依頼が来たり、外資のキャリアをスタートできるとは思いませんでした。

――OSSと収益化の関係についてどう考えていますか?

kyohei 正直、OSSそのものだけで稼ぐのは難しい。スポンサー文化も年々一般的になっていますが寄付だけで生活をするハードルはかなり高いです。

自分の場合は、OSSがきっかけとなって仕事の依頼が来て、それに対して組み込みやカスタマイズを行うことでお金になるというパターンが多いです。

つまり、オープンソースの公開はあくまでもビジネスの入口であって、そこから一手間加えたサービスを提供することで収益化につながるんです。

苦い経験もしています。たとえば、何度もメールでやり取りした後に突然連絡が途絶えてしまうケースや、無償で作成したPoCのコードだけを持ち帰られて、その後の有償開発につながらないこともありました。特に海外の会社とのやり取りでは、個人事業で活動しているため、会社が守ってくれないという難しさを感じています。

OSSの収益化については自分の興味分野なので世界中の事例などを参考に日々研究しています。

――OSS活動はキャリアにどのような影響を与えましたか?

kyohei 今の職場に転職する際にも役立ちましたね。「週に10万ダウンロードされているライブラリの作者なんです」と言うと、みなさん見る目が変わるんです。

日本も海外もOSSをやっているというと、ウケはいいです。さらにコミットログを見れば、自分がどういうコードを書いているかわかりますよね。なので、プログラマーとしての実力をアピールするのに名刺代わりとして使っていますね。

最近はOSSでの活動を評価してくださる会社も増えていますし、実際に私自身も今の会社への転職活動において、pdfmeの実績が間違いなくプラスに働きました。

これからOSSを始める人へ。まずは公開してみよう

――最後に、これからOSS開発を始めようと考えている方へメッセージをお願いします。

kyohei 何よりお伝えしたいのは、躊躇せずに公開してみることの大切さです。日本人エンジニアの技術レベルは非常に高いと感じています。でも、グローバルレベルで発信できていないのがもったいない。

私たちはシャイすぎるし、完璧を求めすぎな気がします。あなたならではの“神関数”をぜひ公開してみてほしい。完璧なコードを目指して公開のタイミングを逃すより、まずは世に出してみることが大切です。そして、もし多くの方に使われたいなら、開発だけでなくマーケティングの視点を持つことの大切さも頭の片隅に置いておいてください。

最初は思ったようにいかないかもしれませんが、OSSが新しい挑戦のきっかけをくれるはずです。

自分はOSSの開発秘話などのストーリーを聞くのが大好きなので、もっと多くの日本人開発者がOSSに挑戦し、面白いストーリーを聞けることが増えると嬉しいです。

――pdfmeの今後の展望を教えてください。

kyohei pdfmeの現在の完成度は私の中では70%か65%くらい。まずは積み残しになっているタスクを完了させたいというのが1つの目標です。本業もありながらの開発なので、完成までには数年かかると思いますが、粛々と続けていく予定です。

もう一つの方向性としては、ライセンスの販売を検討しています。たとえば、一定以上の収益を上げている企業がpdfmeを使う場合にはライセンスを購入していただくというモデルを考えています。小さな企業からはお金を取るつもりはなく、ユーザー数を維持しつつ大企業からライセンス収入を得るという形です。現在収益の一部を他のOSSに寄付していますが、その額をもっと増やしたいです。

また、今はコントリビューターの方々と一緒に開発していますが、今後は有志によって休日に開発されるOSSから抜け出す必要があると考えています。
ソフトウェアはソースコードと運用できる人がセットで揃って初めて価値が生まれるので、将来的にはスタッフを雇ったりして、ちゃんと長期的に信用される組織にしていきたいです。

これからもOSSが自分の人生をもっといい方向に導いてくれるだろうと、漠然と感じているので引き続きOSSライフを楽しんでいきたいと思います。

X ではOSSについてや個人開発についてなどを発信しています。
OSSに関するストーリーを聞くのが大好きなのでぜひ絡んでいただけると嬉しいです。

取材・執筆:河原崎 亜矢