転職から半年が過ぎた。忖度と調整を武器に生きてきた事務系総合職がIT業界に専門職として採用されることはほとんどないので参考になる人がいるかはわからないが、この半年やってきた勉強と反省点をメモしておきたいと思う。
bash
もともとlatexは触ってたので黒い画面にアレルギーはなかったが、基本的にwindows信者なのでMac経験はなくhome brewからcat、パイプ、grep、sed、awkなどのコマンドは触ったことなかった。何冊か本は読んだが、amazonで格安で売っていたlinux コマンドライン入門は参考になった。あと、「新しいlinuxの教科書」は今も重宝している。
bashでできる作業はほかのツールでもできたりするので、実務で必要な場面になってもほかのツールで代行してしまう可能性が高くしっかり時間をとって勉強できたのが良かったと思う。この点社費で研修を受けさせてくれたメンターや上司に感謝している。
今は簡単なデータの前処理ならcat、less、awk、sed、wcあたりでこなしている。
SQL
SQLなるデータベース管理術があることは知っていたが使ったのは初めてだった。SQLそのものより、環境構築とかクエリの止め方とかの方が難易度が高かった。業務で使っているのはAWSなので、独自のコマンドもあり毎日AWSのドキュメンテーションを読んだのがいちばんの勉強になった。
クエリの書き方は人のを真似したのがいちばんの勉強になった。ビッグデータ系では定番のが「ビッグデータ分析:活用のためのSQLレシピ」いちばん参考になっている。ただ、チューニングの仕方とかはいまだによくわからない。型変換を避けよとかスキャンする量を少なくするとかキーを貼るとか基本的なことは覚えていた方がいい気がする。
Python
本格派の方からすると軽量プログラミング言語の習得で四苦八苦するのは想像できないかもしれないが、RユーザーからするとPythonは「ちゃんとした」プログラミング言語でとても敷居が高かった。慣れるのに数ヶ月かかった。特に、オブジェクトなるものは概念からして理解できなかった。
定番である「みんなのPython」は、自分にはやや記述が簡潔すぎて、しばらくPython嫌いだったのだが、並行してやっていたJavaの勉強を進めているうちに理解できるようになった。
当たり前だが、JavaはPythonの親なので、その成り立ちを理解することでPythonの記述方法の意味がわかるようになった。
あと、言語の習得は本を読んでいるだけではわかった気になるだけなのでしょぼいモジュールでもなんでも書いて見て動かすことで「書ける」という自信につながった。とはいえ実際は分析に使ってるだけだが。
「みんなのPython」はいい本だと思うが、分析系の人間にとっては、pandasが説明されていないなどかゆいところに手が届かない感じもあり、最終的には、「科学技術計算のためのPython入門」を買った。やはりエンジニア出身の人と分析系の人ではプログラミング言語に求めることが違うので、分析系の人が書いてる分とっつきやすかった。
Java
上述の通りPythonの理解につながったJavaの勉強だが、実際には何も作ってないし、書けるとはいえない。ただ、チームの他の人がなにをしているのか大まかにでも理解したいので勉強している。
参考書はスッキリわかるJava入門、あと、courseraのデューク大学のコースをとった。ただ、業務で使うわけでもないので途中で放り投げている状況である。
モチベーションを一番高めてくれたのはT.Umezawa氏のjavaゲームプログラミング動画。お勧め。
Java Programming and Software Engineering Fundamentals | Coursera
機械学習
いわゆる機械学習と言われる手法のうち、割と高度な部類に入るgradient boostingやsvm、random forest、ニューラルネットあたりは正直すぐに理解はできなかったし、いまだによくわからない部分も多い。
そうした中でも、ある程度ほかの人の言っていることが理解できたのは、Andrew Ng先生のcourseraの講義をとってみたからだろう。
あとはlocal sensitibity haphingとかfactorization machineといったビッグデータならではの技術に関しては手頃な教科書もあまり見当たらないので、とりあえず論文を追っている。
ここらへんは、正直これからという感じ。一応PRMLとThe Elements of ... はお守りとして買ってある。
クラウドサービス
AWSとGCP、それも一部しか使ったことないが、無料でのおためしができることもあって自分でインスタンス作って遊ぶことで業務で使うのも怖くなくなった。とはいえ、たまにディスクぱんぱんにして冷や汗書いているのだが。 インフラって独特の世界で正直表層で分析している人間からすると勉強のしようもないしインフラエンジニアに頭下げるしかない感じだが、少しずつでも理解していきたい。
ネットワーク
今自分に一番欠けていると思われるのがこれ。正直IPアドレスがなんなのかよくわかってない。しかしネット系企業にいてネットワークの知識がないとか頭くるってるので勉強していきたい。