Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

【Pythonエンジニア列伝:vol.4】cocoatomoさんに、Pythonistaとしてのキャリアパスと訳書「グッド・マス」についてお聞きしました。

f:id:nana_yu:20180502145953p:plain

この記事はPythonエンジニア列伝第四回の6記事目です

Pythonエンジニア列伝は、「Pythonエンジニアたちのインタビューを通して、Pythonを使う人達がどんな人なのか、どんな場面で活用しているのか、なぜPythonに出会ったかなどを紐解く」連載です。

連載はトピックごとになっているので記事単体でも読むことができます。この記事では、cocoatomoさんご本人のPythonとの関わりやキャリアパスについてのお話を聞きました。

バックナンバー

  • その1…cocoatomoさんの紹介と技術ドキュメント翻訳との関わりや歴史を聞きました。
  • その2…Pythonドキュメント日本語訳プロジェクトの足跡を聞きました。
  • その3…PEP454と翻訳にともなうグローバルなコミュニケーションのお話を聞きました。
  • その4…プロジェクトへの参加方法とPythonコミュニティのメリットを聞きました。
  • その5…語学面でのドキュメント翻訳の難しい所や、モチベーションの保ち方を聞きました。

pyq.jp

cocoatomoさんのPythonistaとしてのこれまでをお聞きします

Pythonを学ぼうと思ったきっかけ

f:id:nana_yu:20180316122251j:plain
清原

ここまで、代名詞的な活動としてドキュメント翻訳のお話を主に伺ってきましたが、cocoatomoさんPython自体を始めたきっかけは何ですか?

CPythonの翻訳に関わる前からPythonを使っていたんでしょうか。

cocoatomo

仕事で使っていました。IBMの製品でWebSphere Application Server、通称でWASっていうのがあって、その管理ツールで使っていました。

WASについて説明すると、Java仕様に準拠したパッケージファイルに、JAR、WAR、EARとあって、後ろに行くにしたがって規模が大きくなります。一番大きいEARっていうのは、エンタープライズアーカイブの頭文字をとって、EAR。そのEARをデプロイできるアプリケーションコンテナがWASです。なので比較的大型のものですね。

管理ツールは使用可能な言語がJythonとJaclで、そのときはJythonが推奨だったんです。なので、私のPythonの導入はJythonなんです。CPythonからじゃないんですよ

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原まさかのJython!

Jython

Pythonの処理系の一つで、Javaで作られたPython(通常PythonというときはC言語で作られたCPython)。JythonはJVM上で動作するので、Pythonの文法をJavaの資産を活かして使える利点がある。

cocoatomo

はい、それでJythonを知って、ちょうどそのタイミングで「エキPy」の第1版が出てて。発売直後だったので清水川さんが勉強会をやってくれてたんですね。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原「エキPy」の読書会とかですか。
cocoatomo

そうです、翻訳された日本語版の出版記念で、清水川さんが先頭から読んでいって。懐かしいですね。

そこに、Pythonってなんだろうっていうところを解決したくて参加していました。せっかくなんでCPythonも勉強してみようという。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原そこから、CPython関連の翻訳へ、いうパスなんですね。
cocoatomo

そうですね。何かしらOSSをやってみたい、でも、どうしたらいいかよく分かんなくて。

うろうろしてたときに、たまたまDive Into Pythonを見つけたんで。で、ライセンスを見てみるとGPL(GNU General Public License)で、条件を満たせば好き勝手に翻訳して公開していいと、じゃあやろうかな、って。

f:id:nana_yu:20180316121622p:plain

Dive Into Python

2009年ごろにcocoatomoさんが翻訳を手がけたのはPython2の内容を扱うDive Into Pythonで現在はファイルが残っていないそう。

参照リンクはその後2011年に別の方が同様のライセンスに則り公開したDive Into Pythonと、 現在のバージョンであるPython3の内容に合わせて改定されたDive Into Python3(※現在Pythonの参考書籍として読みたい場合はこちらをどうぞ)。

参照リンク

f:id:nana_yu:20180316122251j:plain
清原素晴らしい。Pythonエンジニア列伝でいろんな話を聞いていったら、同じ人の名前が何回か登場するんですね。意外と人と人とがつながってるなみたいなことを感じるわけです。


競技プログラミングについて

f:id:nana_yu:20180316122251j:plain
清原

JythonからPythonを始めた。JythonからPythonを始めた人はなかなか珍しいと思いますね。

IBMの製品でPythonでカスタムするためにJythonを使っていた。でもずっとそれだけというわけではないですもんね。そのあと何かに使うことはあったんですか。

cocoatomo

その後は、自分で遊んでただけですかね。何かを作った覚えもあまりなくて。

あ、でも、Googleの競技プログラミング。Google Code Jamには参加していました。自分にとって一番早くコードを書けるということで、Pythonを使いました。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原

競技プログラミングというとC++のイメージがあります。Pythonは実行速度が遅いと、定説のようによく言われますね。そのあたりはどうでしたか?

cocoatomo

取りあえず時間オーバーしなければいいんですが、計算量だけは気を付けたほうがいいですね。

どこかで失敗して他人の模範解答を見て、改善点に気づくこともあったりしました。Nの3乗にしてたけど本当は2乗でいける、というようなミスだと、普通はもうアウトになるんです、時間切れで。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原では結局のところ、書き方でカバーするというか、アルゴリズムで勝負なんですね。
cocoatomo

そうですね。ここからちょっと自慢なんですけど、Google Code Jam、予選が何回かあって、世界で1,000人以内に入ると、Tシャツがもらえるんです。そのTシャツはもらいました。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316121637j:plain
大村全世界で? そのシャツすごい。
f:id:nana_yu:20180316122251j:plain
清原レアシャツ。
cocoatomoどうなんだろう(笑)。でも、そのぐらいまではいけたので、Pythonがそんなに遅いわけではないです。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原ほんとだ。それはいい情報ですね、Google Code JamでPythonで戦えたぜ、と(笑)。
cocoatomo

はい。クリアすると昔の人の回答や上位の人の回答も見られるので、それを見て、インプットはこうやって処理するんだとか、定型文とかを勉強していました。とてもプログラミングの勉強になったと思います。

f:id:nana_yu:20180316121622p:plain


「グッド・マス」について

f:id:nana_yu:20180316122251j:plain
清原あとはcocoatomoさんといえば数学の、『グッド・マス』を見ました。どうのような経緯で翻訳することになったんですか。
cocoatomoお世話になった編集者さんが、誰か訳す人いない? ってTwitterでつぶやいてて、じゃあっていって軽く始まりました。じゃあのあとDMでやり取りして。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316121637j:plain
大村

私、ずっとcocoatomoさんは数学を研究されてる方かと思ってました。

職業も謎ですし、雰囲気とかイメージで、どこかの大学の先生なのかなと思っていました。

cocoatomoいや、全然。一般人です(笑)。発言内容がそういう方向に見えそうだというのは解りますけど。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原

『グッド・マス』、どうですか。僕は数学、詳しくないですけど、プログラマーで知っておいたほうがいい数学ってあります?

cocoatomo

『グッド・マス』に書いてあるのがだいたい、プログラマーで知っておいた方がよい数学という範囲の内容になりますね。基本的には全部、プログラミングネタとなんかしら関わってる。

元はブログなんですよ。「Good Math / Bad Math」という名前で、本になったときに後半が落ちたんですけど。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原ちょっと柔らかい感じにしたんだ。
cocoatomoそうですね。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316121637j:plain
大村

読んで、絵がいっぱい載ってて普通の本より読みやすかったです。

著者が数学の本は難しい、というかさっぱりしすぎているから、いろいろ骨も肉も付けて書きたいという動機で書かれたブログ由来の本なんですよね。

f:id:nana_yu:20180316122251j:plain
清原

エンジニアの人で数学が知りたいなという人がつまずかずに知っていける、そんな感じの理解でいいですかね。

cocoatomoはい、そういう目的のものですね。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原それは読まねばっていう気がしてくる。どういう人にお勧めですか、『グッド・マス』は。
cocoatomo

プログラマーをやっていて、数学の話題が出てきて気になるような人ですね。

プログラムと数学は、文化が違うと思うんです。例えば数学の分野ではあまり「実装」という概念がないんです。実体はよく分からないけど、こういう性質のものがあるよ、と定義するのが今の主流な数学です。

たとえば、Cのインターフェースファイルしかないような状態ですね。あとはテストがあるぐらい。実装はよく分かんないけど、取りあえず宣言は書いてある。そういう物だけ使って、うーんってやって、こう組めばいいかなってコードを書いていって、中身のよく分からんバイナリーをリンクすると動いたっていうような。

そういう概念的な仕組みをプログラマー的に説明してあるので、導入には良いと思います。

f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原

僕は数学とかそんな慣れてないので、機械学習の本を読んだときに、数学の話とか数式の話とか出てきたときにやはりどうしても読めないんですよね、すっと入ってこない。

概念的な部分がよく分かってないというか、腹落ちしてないというイメージなんですけれども、そういう人にお勧めできるんですね。

cocoatomoそうですね。まずは数学らしい文章に触れるのにちょうどいいかなと思います。
f:id:nana_yu:20180316121622p:plain
f:id:nana_yu:20180316122251j:plain
清原いいですね。じゃあ機械学習を学んで数学を分かんない人はぜひ『グッド・マス』を読みましょう。

グッド・マス ギークのための数・論理・計算機科学

次回の内容と配信スケジュール

次回はcocoatomoさんのこれからのPythonistaとしての展望をお聞きします。次回が第4回cocoatomoさんとの対談記事の最終回となります。次回もどうぞお楽しみに。Pythonエンジニア列伝の次回配信は 4/27(木) 配信予定です。どうぞお楽しみに。

バックナンバー

  • その1…cocoatomoさんの紹介と技術ドキュメント翻訳との関わりや歴史を聞きました。
  • その2…Pythonドキュメント日本語訳プロジェクトの足跡を聞きました。
  • その3…PEP454と翻訳にともなうグローバルなコミュニケーションのお話を聞きました。
  • その4…プロジェクトへの参加方法とPythonコミュニティのメリットを聞きました。
  • その5…語学面でのドキュメント翻訳の難しい所や、モチベーションの保ち方を聞きました。

エンジニア列伝アーカイブ

過去回も充実した内容です。次回配信までにいかがですか?

第一回:清水川貴之さん

第二回:鈴木たかのりさん

第三回:石本敦夫さん

pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.