フリーランスのPythonエンジニアが実践する、OSS開発を起点としたキャリア形成

フリーランスエンジニア
服部 英夫
ベンチャー、スタートアップ等を数社経験後、現在はフリーランスとして活動するふつうのソフトウェアエンジニア。Python, Go, Rustを使ったアプリ開発が得意分野。本業の傍らOSS開発も積極的に行う。

GitHubで3500以上のStarを集めるPythonのコード整形ツール autopep8。作者の服部さん(@hhatto)は、OSS活動のアウトプットが自分のキャリアに大きく影響してきたと語ります。

今回はそんな服部さんに、OSSがどうキャリアに役立つかや、OSS開発を進めていく中で気をつけていることについてご紹介いただきます。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。「副業・複業」で、本業では経験できない、新しい環境/開発スタイルを経験しよう!

→「Offers」をもっと詳しくみる! かんたん60秒で副業を始めてみる

Pythonとの出会いとOSSのきっかけ

はじめまして、フリーランスエンジニアの服部(@hhatto)です。

現在は、ブロックチェーン関連のWebアプリケーション開発やフォント制作販売会社での研究開発・技術顧問をしています。

業務外では、OSSの開発を行っており、Python/PHP/C/Go/Rustで作成したライブラリをオープンソースとして公開しています。特にautopep8というPythonのコード整形ツールは3500以上のStarを集めました。

https://github.com/hhatto/autopep8

▲autopep8 

今回は、OSSに打ち込む理由やメリットを中心に、OSSを起点にしたキャリア形成について紹介できればと思います。

Pythonとの出会い

私がPythonに触り始めたのは、大学時代、『How to Become a Hacker』というサイトを見て影響を受けたのがきっかけでした。この頃は、Pythonのユーザー数が少なく、日本語の技術書やWeb上の情報源もあまりなかったため、PythonJPのメーリングリストを主な情報源として学んでいました。

Pythonはプログラミング言語としては好きだったのですが、大学卒業後に入社したSESではC言語をメインで使っていたので、一時的にPythonからは離れていました。

OSSを始めたきっかけ

SES在籍中にOSSを始めたのですが、その理由は次の3つです。

  • 業務で使っているC言語以外での開発経験を積みたかった
  • OSSだと実践的なFBが得られる
  • もともとOSSに対してのあこがれがあった

SESにいた当時、1つの言語の経験だけだと、エンジニアのキャリアとして成長が見込めないという焦りを感じていました。ただ、業務内で融通を利かせることは難しかったので、OSSなど業務外の活動の中で開発経験を積めないか、と考えたのがきっかけです。

また、言語について書籍でも一通り学ぶことはできますが、書籍をなぞるだけでは実践的な経験は得られないと感じていました。公開して世に問う、というと大げさな気もしますが、ユーザーに使われる中で実践的なFBを得ながら経験を積んでいく方が自分の力になると考えていました

実際、OSSを通してPythonの実力だけでなく、プログラミング力全般が上がったと思います。

当時の時代背景も理由の1つです。当時は、Pythonの便利なOSSが使われるケースが徐々に出てきた時期だったのですが、そういったものに感化されて自分も作りたいと思ったことも、モチベーションとなっていました。

OSSで勉強して仕事にする

私は今でもOSS活動を行っていますが、先程のポイント以外に次のようなメリットを感じています。

  • OSSが名刺代わりになる
  • 実務未経験の言語でも実績を積む機会になる

まず、OSSでの活動は、自分で書いたコートがそのまま公開されて残っているので、どの分野に興味があるのかや、どのようなソースを書いているのかの証明になります。実際、転職の際にはOSSの実績が役に立ちました。

特にautopep8のように、ある程度認知を得られたOSSがあると、その傾向は強いと思います。

例えば、SESからベンチャー企業への転職では、実務経験はC言語しかほぼなかったのですが、autopep8含めPythonのアウトプットがOSSとして残っていました。そのため、Web系で同じ動的言語であるPHPをメインに使っていた企業への転職に繋がったと思います。

他にもPythonメインの会社への転職時には、Pythonやその他のアウトプットがあったので、(良いか悪いかは別として)通常はコーディング面接のようなものがあるのですが、私は無しで入れたりしました。

また、実務での使用実績のない言語・技術についても、実績として提示することができるというメリットがあります。

実務経験が無い言語を使った案件だと、フリーランスとしてはなかなか参画しにくいですが、OSSである程度の実績を積んでおくことで、クライアントから信用を得やすくなります。

直近だと、GoのツールをOSSとして公開しておき、Goの習熟度合いを評価してもらう、といったことがありました。

新しい言語を学ぶ際は、必ず書籍で学ぶだけでなく、OSSとして実績を残しながら学ぶようにしています。

フリーランスエンジニアにとって、新しい技術・言語を学習しながら、実績としても提示できるOSSは、案件獲得・キャリア形成の面でとても魅力的だと思います。

▲PyCon JPでの登壇時 

OSSの始め方・進め方

OSSにはハードルを感じる方もいらっしゃると思うのですが、気軽に始めるのが良いと思います。実際のOSSの進め方について、アイデアの出し方と開発中に意識していることについてご紹介します。

アイデアの出し方

まずは、自分が欲しいツールはないかという視点で探しています。autopep8も、コードを自動で修正してくれるツールが無かったため、省力化のために開発しました。

OSSは他人に強制されることは無いので、他の人がどう思おうと関係ありません。(ユーザーが増えてきたら別ですが、、)

自分が便利だなと思い、同種のツールがまだ世の中に無ければ、まず手を動かしてどんな形でもいいので公開すると良いと思います。

あとは、単純に好奇心の向くままに開発することもあります。例えば、あるPerlのツールがあるのですが、処理に結構時間がかかっていて、それをGoで書いたらどれぐらい早くなるかな、という好奇心でツールを作ることもありました。

自分の欲しいツールのアイデアが湧かない、好奇心の向くテーマが無いという時は、既存のOSSの開発に参加すればいいと思います。

今は、OSSがごく一般的に使われています。GitHubに載っているIssueの中にはやろうと思えば簡単なIssueもあるので、実際にPullRequestを書いてみるとか、そういうところから始めればいいと思います。

設計について

autopep8の時は、PyPIというPythonのパッケージを登録するサイトを参考にしていました。Pythonで開発する場合に書いてはいけないもの、などのお作法について学べるので重宝します。

他言語の同様の実装を参考にすることもあります。例えば、Goで開発したgoclocの場合は、Rustで同様の実装が元々あったので、それを参考にしていました。

開発の際に意識していること

開発しているフェーズによると思うのですが、初期はユーザーがいないので、自分が使いたい機能や、実際に便利な機能を提案していただいた時には、ほぼ何も考えずに便利だから取り入れようという形でどんどん機能追加をしていました。

今のautopep8だと何年も開発が進み、あまり既存のものをバグらせないように開発しています。今の段階だと使っていただくユーザーの声が大切なので、上げてもらった要望をチェックした上で、違和感がない機能であれば、取り入れています。

ただ、やはりバグは絶対に発生してしまうので、バグが出た時はできるだけ早く修正することにしています。単純に上がってきたイシューを素早く解決したり、実際にコードを修正しないものでもしっかりと見てすぐに返せるものは返したり、といったことを意識しています。

まずは気軽に始めてみよう

今ではPythonのコード修正ツールの古株として紹介されることもあるautopep8ですが、最初は全然ユーザーがおらず、こんなに多くのユーザーに使ってもらえるとは思っていませんでした。

伸び始めたのは、次のようなきっかけがあったからだと思います。

  • Hacker Newsへの掲載
  • PyCon JPのLTでの紹介

大規模なOSSに参加することも面白いですが、開発が好きで開発自体を趣味でやれるような感覚の持ち主にとっては、開発したいものを自由に開発する、といったスタンスでまずは始めてみるのが良いと思います。

その上で、伸びたらいいなくらいの認識でいればいいのではないでしょうか。

継続的にOSSに取り組んでいることで、技術への興味があるということの証明にもなりますし、継続して取り組み続けているということ自体も評価されているため、継続的に関わるということが一番大切なことだと思っています。

フリーランスエンジニアにとってはキャリアアップにもスキルアップにもつながる良い取り組みだと思うので、OSSに親しみのある人が増えれば幸いです。

Offers」は、時代の変化や環境にあわせてスキルを磨きたい、そんな人にぴったりのサービスです。

いくつもの転職媒体を使って、企業を探し回るのはもう終わり。「副業」から始まる新しい働き方を実現します!

本業では経験できない、新しい環境/開発スタイルを経験しよう!



この記事をシェア

関連記事


副業・フリーランス

プログラミング

デザイン

インタビュー

【Unity&バックエンド採用】Offersコンシェルジュを活用し、VPoE業務に集中できた恩恵とは

幼児や小学生の家庭学習の必要性が求められている今、企業や団体がICTを活用した学習コンテンツの開発に注目している。ファンタムスティックは子ども用の学習アプリやデジタル教育コンテンツの開発に強みを...

転職前提の複業オファーで、2ヶ月後に正社員へ!未来のCTOを採用した注目スタートアップの採用術

スニーカー市場は熱狂的なファンも多く、一次流通・二次流通ともに毎年拡大を続けている。そのような市場の中、スニダンことスニーカーダンク(SNKRDUNK)は市場の拡大を追い風に成長し続けてきたが、...

『実践TypeScript』の著者・吉井健文が考えるTypeScriptの魅力と可能性

世の中にはさまざまなプログラミング言語が存在します。そして、人によってはただならぬ愛着を持つ人も。そこで本企画では、このプログラミング言語にフォーカス。お気に入りのプログラミング言語のことをマニ...

ヤフーが実践するギグワーク活用がこれからの新しい採用手法に!?リモート環境で求められる人材とはーこれからの「強い組織の作り方」CEOセッションー

新型コロナウイルスで、働き方改革やデジタル・トランスフォーメーションの流れが急激に加速し、採用・育成・マネジメントの状況は大きく変化しています。 株式会社overflow、株式会社zenkig...

お金

採用・組織

グルメ