PSF(Python Software Foundation)のQ4 2021 Community Service Awardの一人に選ばれ、受賞の盾を持つ清水川さん。
「何を重視してエンジニアのキャリアを歩むか」は、人によって千差万別です。CTOやVPoEなどの技術リーダーを目指したい方もいれば、収入を重視する人もいるでしょう。自分の好きな技術を磨き続けたい人もいるかもしれません。
名著『エキスパート Pythonプログラミング』の翻訳者であり、一般社団法人PyCon JP Association会計理事、Python mini Hack-a-thonやSphinx-Users.jpといったPython関連イベントの運営者を務める清水川貴之さんは、「自分自身が楽しいと思えること」を突き詰めてキャリアを歩んできたといいます。
その思いがコミュニティ活動やOSS開発につながり、ひいてはカンファレンス登壇や書籍執筆にも携わるようになったのです。清水川さんがどのような経緯でPythonと出会い、各種の活動を行うようになったのかを聞きました。
Pythonは自分の手になじむ言語だった
――清水川さんがプログラミングを始めた経緯からお聞かせください。
高校生の頃に、ゲームを作りたくてパソコンを購入してプログラミングを始めました。プログラミングを知ったのは小学生の頃で、ファミコンのBASICで雑誌のゲームプログラムを打ち込んでいました。高校入学時に買ったパソコンのBASICでは、キーボードの同時押しをうまく扱えないため、より低レイヤーの部分に触れるアセンブラを書くこともありました。友だちと一緒に、プログラミングを楽しんでいました。大学時代には、アルバイトで衛星チューナー用の組み込みC言語のコードを書いていましたね。
大学卒業後、KDDIに入社しました。KDDIは関連企業のなかに研究所もあり、「そういった関連企業に配属されれば、プログラミングに携われるだろう」という安易な考えで入ったんです。しかし、研究所には配属されず、私の希望とは全く違う部署の総務グループに配属されました。仕事ではプログラミングに触れることができなかったので、その代わりに趣味でプログラミングに没頭しました。大学時代の友だちに「一緒にゲームを作ろう」と声をかけて、平日の夜や土日に集まっていました。
でも、やはり「仕事でプログラミングをしたい」という思いが強くて。社内の制度を利用して、プログラミングに携わることのできるKDDIテクノロジーという子会社に出向し、C言語のコードをずっと書いていました。
――清水川さんはPythonの専門家として有名ですが、Pythonには何をきっかけに触れたのですか?
当時は、自宅でサーバーを立ててPerlなどで書かれたCGIを動かし、インターネット上にブログを公開するのがはやっていたんですよね。その頃はブログではなくWeb日記と呼ばれていましたが。でも、Perlの文法は自分にはあまり合いませんでした。そんな折に、高校時代の友人が「Python製のZopeというWebアプリケーションフレームワークがあって、それを使えば簡単にWebサイトを作れる」と教えてくれました。
ひとまず使ってみようと思って自分のサーバーにZopeをインストールすると、確かにすぐWebサイトを構築できました。そして、Pythonを書けるとZopeに手を加えられるので「もっと拡張してみよう」とPythonを学び始めたんですね。Pythonの文法はC言語と共通点が多くて、C言語をやってきた自分にとって比較的使いやすいと感じました。
そうしたなか、Web上でZopeの情報を調べていると、日本Zopeユーザ会というコミュニティがZope Weekendというイベントを開催することがわかったんです。良い機会なので、イベントに申し込んでライトニングトークに登壇をしました。
衝撃的だったのが、イベントの後の懇親会です。飲み屋で、イベントの参加者がZopeやPythonについて非常にレベルの高い議論をしているわけですよ。そうした場での人とのつながりや得られる情報の濃さに惹かれたのが、コミュニティ活動の原点になっています。
『エキスパート Pythonプログラミング』の翻訳は大きな成功体験になった
――清水川さんは、PyCon JP AssociationやPython mini Hack-a-thon、Sphinx-Users.jpなどのPython関連イベントの運営に携わられています。こうしたコミュニティ活動はご自身のキャリアにとってどのような意義があるでしょうか?
利点はいくつもあり、まず新しい知識に触れられる機会が増えました。そして、イベントや懇親会などで得た情報をブログに書くことで、それを読んだ人たちに対して知識を共有できます。その記事を読んだ方々からまた別の情報をもらえることもあり、知識をアウトプットすることで自分がさらに良い知識を得られるという好循環が生まれました。
Zope Weekendへの参加をきっかけとして「他の人たちと交流して情報交換をしたい」と思うようになり、さらにはPyCon JPを立ち上げることにもつながりました。PyCon JPでのイベント運営やOSS開発などに携わるなかで、海外の人とのやり取りも増えていきました。当初は海外の技術イベントに参加することに全く興味がなかったのですが、PyCon JPでの活動をきっかけに、徐々に海外のPyConやEuroPythonなどのイベントに参加をして、登壇するようになりました。自分でも興味深い変化だと感じます。
そして、コミュニティ活動がなければ、書籍を翻訳・執筆することもきっとなかっただろうと思います。というのも、書籍を執筆してみないかと声をかけられたことがそれ以前にもありましたが、「自分にはできないだろう」と当時は断ってしまったんです。
その後、Zopeは日本語の情報が少なかったため、私は余暇の時間で英語のマニュアルを翻訳する作業に取り組みました。その活動をしていると、英語で書かれた技術文書を読んで日本語に翻訳する作業がだんだんと身近になってきました。もしかしたら、書籍の翻訳もできるかもしれないと、少しずつ自信がついたんです。
PyCon JPのカンファレンスにてトークの登壇者に質問する清水川さん。
――ここからは、書籍執筆の活動についてお聞かせください。
『エキスパート Pythonプログラミング』は、私が翻訳をした1冊目の書籍になります。この本の初版が出た頃(2010年)は、Pythonについて日本語の情報がほとんど存在しない状況で、学習したければ英語の情報を調べるしかありませんでした。
かつ、体系的な情報は英語でもほとんど見つからないという時代だったんです。そんななかで出版された英語版の『Expert Python Programming』は、多くのPythonエンジニアたちが知りたかった情報が網羅されている、衝撃的な本でした。
内容が素晴らしかったので、Pythonコミュニティの合宿にこの本を持っていったところ、周りの方々からも「良い本ですね」と言ってもらえました。さらに、書籍の目次を翻訳して私のブログに載せたところ、そのコミュニティの別の集まりで「ぜひ、この本の全文を翻訳しましょう」という話になりました。私を含めて4人で翻訳し、書籍として出版したいという構想が浮かびました。
偶然ですが、ある技術イベントの会場を貸して頂いていた出版社の方とつながりがありました。書籍を出版するには、出版社内の企画会議で書籍の必要性やニーズがあるかなどを説明して、承認を受ける必要があります。その方に翻訳書出版の企画を持ち込み、翻訳に携わる4人がそれぞれの視点でこの本の良さを説明して、企画会議にかけてもらい、無事に企画を通すことができました。コミュニティ活動やZopeのドキュメントの翻訳に携わったこと、OSS活動をしたことなど、さまざまな要素が影響して書籍の翻訳に結びついたのだと思います。
――『エキスパート Pythonプログラミング』の日本語版を出版してからの反響はいかがでしょうか?
今でこそ、高度な内容を扱うPythonの本は世の中にたくさんありますが、当時はかなり珍しかったです。そのため、多くの方々に読んでいただけました。また、出版後には書籍の内容について参加者同士で議論するようなスタイルの勉強会を、複数回に分けて実施しました。かなり濃い議論ができ、イベント内で参加者に説明するという経験がさらなる学びとなり、自分自身のスキルアップにもつながりました。
――今日まで、清水川さんはたくさんの書籍を執筆・翻訳されています。本を書くのはかなり大変な作業だと思うのですが、継続できたモチベーションの源泉は何にありましたか?
『エキスパート Pythonプログラミング』の翻訳が、多くの方々からポジティブに受け入れられたのは大きいです。もし、この成功体験がなければ「大変だから、本を書くのはもうやめよう」と思っていたかもしれません。多くの人に情報を伝えられるし、かつ自分もスキルを習得できるという、意義のある仕事だと考えています。
それから、本を書くとより本を読むようになるという好循環が生まれます。たとえば、翻訳する本のなかにコンピューターサイエンスの話が出てきた際、どう訳すべきかを調べるためにコンピューターサイエンス関連の本を読んでみるといった行動を起こすからです。翻訳をきっかけに関連情報を調べ、理解が深まることで説明ができるようになり、さらに前向きに翻訳に取り組めるというサイクルが生まれているので楽しいですね。
OSSへの貢献は「社会貢献」と「自己実現」を両立する
――清水川さんはPython製のドキュメント生成ツールSphinxのコミッターでもありますが、この活動についてもお話しください。
海外のOSSではよくあることですが、Sphinxは日本語の処理がうまく動いていない部分がありました。SphinxはOSSであるため、自分自身でコードを書いて修正を提案していたのが、このツールと関わり始めたきっかけです。
しばらくして、Sphinxの作者であるGeorg Brandl氏が多忙になってきたため、メーリングリストに「コミッターを募集したい」という連絡をしていました。私はいくつもSphinxにPull Requestを出してきましたし、ソースコードの中身も把握していました。そこで立候補して、Sphinxのコミッターになったという経緯です。
――OSS開発に挑戦してみたい人に向けて、清水川さんからアドバイスはありますか?
仮に何かのOSSを自分が使っているとして、使いにくい機能や動きのおかしい機能があった場合、取り得る方法は大きく分けて2つあります。ひとつは、手元にあるソースコードを書き替えて動くようにして、自分だけで使う方法。もうひとつは、ツールのリポジトリに向けて改善案や修正後のソースコードなどを提案して、本家に取り込んでもらう方法です。
前者の方法だと、ツールの新しいバージョンが出た際に自分の手元の修正とマージする作業が発生します。それに、自分の修正に起因したバグが発生しても、自分だけしかメンテナンスしていないのでバグの検知も遅れますし、修正も自分で行うしかありません。ですが後者の方法ならば、より多くの人に使ってもらうことで、バグも見つかりやすくなりますし、自分以外の人も修正できるため利点が大きいんですね。
他の方々にとっても価値のあるコード修正であれば、積極的に本家のリポジトリにフィードバックしていくべきだと思います。それがOSSに対する貢献につながりますし、将来的にはOSSのコミッターになるという可能性も生まれます。
「楽しいこと」を追求した先にエンジニアのキャリアがある
――最後に、清水川さんのキャリアを踏まえて、他のエンジニアの方々に伝えたいことをお話しください。
自分が楽しい気持ちで技術と向き合って、その過程でさまざまな知識を習得して、結果としてスキルが向上していくという流れが理想だと思います。
OSC(オープンソースカンファレンス)に参加し、一般社団法人PyCon JP AssociationのPython Boot Campの活動を紹介している様子。
今回、私自身のキャリアを振り返ってみると、ずっと面白いことや楽しいことに向き合い続けているなと改めて思いました。友だちと一緒にゲームを作っていた頃も、ただただ楽しいから取り組んでいました。そして、仕事でプログラミングができない環境にいた時期も、プライベートでコードを書いたり、コードを書ける場所に移ったりという行動を起こしてきました。
技術コミュニティに関しても、試しに行ってみて「合わないな」と思ったところは、それ以降は参加しなくなったこともあります。決して、どんなコミュニティであっても参加し続けていたわけではありません。
どのような環境が好きなのか、何に取り組むのが楽しいのかを自分なりに考え、好ましいインプットやフィードバックを得られる場所を探して、環境を変えてきました。そのくり返しで、できることの幅が広がったり、新しい挑戦をしたりといったことを実現できました。ぜひ、この記事を読まれている方々も、自分が前向きな気持ちで取り組める領域を見つけていってほしいと思います。
取材・執筆:中薗昴
写真はすべて清水川さん提供