普段している仕事
――普段はどういった仕事をされているのか詳しく教えてください。まずは嶋田さんからお願いします。フリーランスとなると、他の方と異なる点もあるのかなと思いました。
嶋田:今はWebエンジニアなので、Web開発やっている方とは特に変わらないかと。
――スクレイピングに詳しいという印象があります。
嶋田:スクレイピングはお遊びでやることが多いのでなかなか表に出せないんですけどね。仕事では今はDjangoを使用していたり、実はPythonよりもReactを書いている時間が長いんですけど(笑)。あとはCeleryに苦しめられる毎日です。
――Web系の仕事を多くやるようになったきっかけはなんですか?
嶋田:もともとは制御系のエンジニアでした。仕事・趣味でPythonを使っているうちにすごく好きになって、Pythonで仕事をしたいと思うようになったのですが、そのときは地方で働いていたこともありPythonの仕事がまず見つかりませんでした。地方にPythonを使える制御系の仕事はありませんでした。あったとしても、テストツールでちょっと使うくらいのものでした。そんな状況が辛かったので上京して、そのタイミングでWebがメインの仕事になりました。
――清水川さんはどのようなお仕事をされていますか?
清水川:私は、最近は機械学習関連の仕事をしています。例えば、大学で機械学習を専門に研究している方が書いたコードをもらってWebシステムに組み込み、データを入れて学習させたり、アップデートしたり、推定された結果をWeb画面に出したりといったことが今はメインの仕事になっています。
フレームワーク的にはDjangoやCeleryを使ってAmazon Web Services(AWS)に載せたりしています。それだと結局は普通のWeb開発と変わらないように見えますが、実際のところは機械学習のコードを書いてくれた人(大学の先生など)とコミュニケーションをとれるようにしないといけないので、そのための知識が必要になります。「特徴量」「分散」「学習が収束する」とか「データの分散は? 偏っている? 件数が足りない?」というような話をしないといけない。
末田:ハイレベルですね。
清水川:機械学習周りのコードについてはこちらで責任を持ってないので、ハイレベルということはないですよ。ただ、動かした結果「何かエラーがでました」という伝え方はだめで、Jupyter Notebookに組み込んでダミーのデータを入れて結果を出力したらこうなってここがおかしいですね、ということを話せないと仕事が進まないので。
あとは、講師業もしています。お客様からの依頼を受けて研修を行います。そのためのテキストを作ることも仕事ですね。教えると言っても、相手のレベル感も目的も違ってきます。例えば、「プログラムを書けるようになりたい」なのか、「機械学習をやっているのでPythonは詳しいが、Web開発まではできないので結果を扱えるようにしたい」とか。後者の場合は比較的楽ですね。すでにPythonを知っているので。一方で前者の場合は、教えるのが難しかったりします。教える相手によってやり方が違うのは大変な点ですが、同時に面白い点でもありますね。
――では次は林田さんお願いします。
林田:ユーザのアクセスログをサービスに活かしたい、KPIをビジネスで使いたいといった要件をもらって、その分析がしやすいようにデータを加工したりします。ダッシュボードはTableauを使っています。ダッシュボードの作成自体は担当のエンジニアにおまかせして、私はひたすらETL(データの抽出、変換・加工、ロード工程のこと)のコードを書いています。
清水川:Tableauってバックエンドのデータウェアハウスは何を使っていますか?
林田:BigQueryです。速くてよいですね。
――次に武田さんにお伺いします。
武田:今はPythonを使うのは主に研究のデータ分析です。e-Learningのアクセスログを取得して分析したりですね。
清水川:e-Learningは研究対象ですか?
武田:研究の方でやっています。
清水川:アクセスログというと、具体的にどういったものですか?
武田:誰が何をクリックしたかというようなデータが蓄積されるので、その傾向をみて行動分析をしたりします。脱落しやすいのはどういう特徴量があるのかとかですね。それをダッシュボードを使って視覚化してみたり、あるいはレポートとかを出したりするので、テキストマイニングのようなことをしたりしています。
清水川:ダッシュボードまで含めて自分たちで作るのですか?
武田:私は自分で作っています。
清水川:ダッシュボードは何を使っているんですか? 自作でしょうか?
武田:データをJSONの形式にするまではPythonで処理して、フロントにVegaというJavaScriptのライブラリを使っています。自分たちで作っているのでなるべくシンプルにしようとしています。
清水川:今だったらメモリに乗り切る範囲とか?
武田:メモリの範囲でやろうとしています(笑)。
――末田さんはいかがでしょうか。
末田:AWSのLambdaというサービスで実行させるコードをいろんなユースケースに合わせて書いています。例えばWebサービスのログをAWS CloudWatchに流して集計する仕組みがあって、それらの情報を可視化ツールであるCloudWatch Dashboardに渡すツールを毎時実行させたりとかですね。最近はPython 3.6が対応したので楽しく書いています。デプロイ用のツールも基本的にPythonで書いています。
他には、クローラーも書いています。しっかりしたクローラーのコードをGoで書き起こす前のPOC(Proof of Concept;概念実証)としてPythonで書き起こすということをしています。Pythonで書き起こしたものが動くのを確認してからGoで書きはじめるという流れで、小回りしたいところでPythonを使うことが多いです。
