mcommit's message

ソフトウェア開発の仕事をしているsimotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

2017年にやりたいこと

2017年あけましておめでとうございます。

去年のお正月は比較的時間があったので、読書したりコードを書いたりできたのですが今年はあまりそういった時間が取れませんでした。
年に一度のお正月なので、今年取り組んでみたい事をあげたいと思います。
※といいつつここ数日、色々と勉強したり考えたりしていることもあるので出来ればこの後も早めに記事を更新したいと思います。

2017年の目標

ここ数年やろうやろうと思っていてもできていないことも多いので、自分の整理の為にも2017年の目標・やりたい事を書いておきたいと思います。
※いざ列挙してみると沢山上げてしまったのでそれぞれの目標の「期間」「規模」「難易度」のイメージを合わせて書いておきたいと思います。

やりたいこと 期間 規模 難易度
コンパイラorインタプリタを自作する 長期 高い
月に2記事はブログを更新する 長期 まあまあ
ディープラーニングについて勉強する 短期 高い
FPGAで遊ぶ 長期 まあまあ
経済学の勉強をする 短期 まあまあ
Linuxデバイスドライバを書いてみる 短期 低い

う~んこうして列挙してみると長期にわたってやりたい事が多いですね。

- コンパイラ/インタプリタを自作する

3年前位にやりたいと思ってから少しずつ勉強しているのですが、なかなかまとまった成果物ができていないのでいい加減ある程度の成果物を出したいです。

そもそもある程度ってどんなものだろうかってか考えてみたのですが、3年前にコンパイラを書きたいと思った理由は

C言語のコードを解析して、自作関数のテストコードを自動生成したい!」

とCUnitでとあるC言語の作業のテストコードを、ガリガリ・ダラダラと書いていた時に思いついたからでした。

最初にとったアプローチはテスト対象のCの関数をRubyの拡張モジュール経由でRubyから呼び出し、CUnitを書くよりも簡単にテストできるようにするというものでした。

関数のプロトタイプ宣言をパースして、拡張モジュールを自動生成し見かけ上動的にRubyからテストを行うということはできたのですが、Cのデータ型とRubyのデータ型の違い(特にポインタ型変数の扱い)をどうするかで悩んで途中で放置してしまいました。

いまでも無残で情けない残骸がGithubには残っていますが・・・github.com

まぁそういうことをしなくても、

RubyFFIpythonのctypes
github.com

15.17. ctypes — Pythonのための外部関数ライブラリ — Python 2.7.x ドキュメント

を使うことでやりたかったことは、今ならばもう少し簡単にできそうですが、失敗に終わった取組みを今更もう一度する元気も無くしてしまっています・・・

じゃあ今はコンパイラの勉強をして何がしたいのかと言われても困るのですが、ちょっとした静的解析ツールみたいなのを作ってみたいなと思っています。

学習に関しては、「解析」なので、最適化とかのコンパイラのバックエンドはとりあえず横に置いておいておけそうです。
ここ最近の学習の成果として、字句解析~構文解析まではなんとなく実装の道筋は見えた(見えたけど構文解析のコードはフルスクラッチで書くと面倒臭くて量が多くてきたなくなることが分かってきて、なんというかモチベーションの低下との戦いになります)のであとは意味解析の手法とかについて理解できればとりあえずコードはかけそうな気がしています。

このへんの学習成果(というより学習経過か・・・)については、

mcommit.hatenadiary.com

の続きのエントリとして早く書ければと思います。

- 月に2記事はブログを更新する

無理にノルマにする必要もないのですが、毎月のアクセス数が増えるとモチベーションも少しはキープできるのでなんとか頑張りたいです。

書きたいことはあるけど文章にまとめる時間やコードを動かしたりする調査の時間がかかるということが多いので、とにかく集中して記事を書く習慣を身に付けたいです。

- ディープラーニングについて勉強する

単純に人工知能系の技術が面白そうという軽い気持ちです。
やって見たい事として自宅に付けている防犯カメラの動体検知や人体検知の精度があまりよくないので勉強して改善してみたいなぁと考えています。

- FPGAで遊んでみる

評価ボードが積み基板になっているので・・・なんとかしないと。
論理回路の勉強もきちんといちからやりたいな。

- 経済学の勉強をする

去年、高橋洋一氏の本で経済学にはまってからちょこちょこと本を読んだりするようになりました。

自分にとって何かプラスになったかと言われると直接的なメリットはないのですが、それでも経済学って自分達の生活に関わってくることなので知れば知るほど面白いです。

今年中に、積本になっている

この世で一番おもしろいマクロ経済学――みんながもっと豊かになれるかもしれない16講

この世で一番おもしろいマクロ経済学――みんながもっと豊かになれるかもしれない16講

高校生からわかるマクロ・ミクロ経済学

高校生からわかるマクロ・ミクロ経済学

の2冊とマンキューの本を何冊か読み終えたいと思います。

- Linuxデバイスドライバを書いてみる

これは完全に仕事向けです。
Linux開発に詳しい方が「一回くらいは書いといた方がいいよ」と言われていたのでなんとなくラズパイとかで書いておくかみたいな気持ちがあります。
イメージ的にはコードを書く部分は大したことないんだと思うんですが、事前の準備とか(カーネルのコード用意したり)調査が面倒そうです。
※過去に何回か既存のドライバを修正したりとかはあるのですが、きちんと環境構築とか手順とか、作法とかを把握しておきたいです。

こういうのは短期間で、2~3日時間を決めてバッっと勉強してみるのがよさそうですね。

課題

長期の目標はモチベーションと時間の確保が難しいです。
辛い時期を乗り切るために計画を立てたり、自分の中で小さな目標を設定したり、人に発表する機会を無理やり作ったりしてなんとか頑張りたいと思います。

まとめ

だらだらと書いてみましたが、あれやこれやとやりたい事があって浮気性な自分がちょっと嫌になります。
勉強してみたからと言って直接プラスになることは少ないかもしれませんが、できる仕事の幅が広がったり知的好奇心が満たされたりするので、悪いことでもないのかなと思います。

仕事や勉強で知り得た知見などはできるだけこのブログに上げて行きたいと思いますので、読んでくださった方にとって何かプラスになれば幸いです。
ということで、2017年は仕事と合わせて勉強を頑張る年にしたいと思います。

エイ、エイ、エイ!