Let's write β

プログラミング中にできたことか、思ったこととか

2016年振り返り & 2017年のやってみたいこと

Github

f:id:Pocket7878_dev:20170104132758j:plain

比較的よく働いたと思う。 ただしこれはプライベートリポジトリも含めたもので、会社のプロダクトをGithubで管理しているので 思いに会社のプロダクトのRails, iOSあたりを毎日なにかしら書いているので、ほぼ埋まっているのは 当たり前かもしれない。

来年はオープンソース周りにも手を出していきたい

OSS

コントリビュート

the-rust-programming-language-ja

Rustの公式ドキュメントの翻訳プロジェクトκeenさんが始めてらして宣伝なさってたのでRustに丁度 興味を持っていた時期だったので参加した。そこそこ訳したように思う

f:id:Pocket7878_dev:20170104133326p:plain

コミット数では一応2位ということになった、行数とかで言うとそうでもない気がする。 一旦の1.6の翻訳が終わってからはあまり手を付けられていない.

github.com

Plan9PortはPlan9 OSのツールをモダンOSに移植したツール群であるが、 僕はこのPlan9Portのツールが大好きで、よく使っていた(Acme, Sam, 9Term)あたりだけだが、 日本語入力をサポートしていない(キーボードのコードをそのまま入力している)ので、それを つけようともがいていて、一応それらしいものがついた。

poketo7878-dev.hatenablog.com

今のところ余りにも日本語入力という目的のために非効率なことをしている部分もあるし、UseCaseとしては特殊だと思うのでPRは送っていない。

github.com

GooglerのサイドプロジェクトとしてRustをバックエンドにつかったエディタが開発されてるぞというのをみて 興味がある時に初期のプロジェクトが有るという機会はあまりないと思って使ってみたところこちらでもMacIMEをサポートしていなかったので plan9portにつけたときと同じ要領で日本語入力をサポートするPRを送った

github.com

こちらのほうが、plan9portとは違ってプログラムが直接文字を扱っているので実装しやすかった。 一方でやはり変換まわりはバックスペースを送りまくって置き換えるという怪しげな実装なので、 そのうち範囲リプレースをバックエンドでサポートしたら置き換えるべきだと思う。 Xcode8には事情により対応しないようなので、僕のローカルで環境を整えるのが大変でそれ移行あまりテストできていないのが悔しいが 人生初のGooglerとのPRのやりとりになった。丁寧にレビューしてくださってありがたかった。

その他は仕事でつかっている幾つかのライブラリにCarthageのアップデートやら、Cocoapod対応やらのPRを送った。

個人プロジェクト

github.com

上でも触れたがPlan9Portのエディタが大好きで使っていたのだが、 どうしても日本語入力をサポートしたとは言えネイティブのエディタには追いつけないので、 個人的に良いと思った機能を模倣したテキストエディタCocoaのNSDocumentをつかって実装している。 https://pocket7878.github.io/ec/

MouseChoordsの機能はサポートしていないが、右クリックに依るジャンプや、 中ボタンによるコマンドの実行などの機能は実装済みである。 また、ネット上でAcmeやSamにほしいと言われていた幾つかの機能も追加機能としてつけている (ドキュメントにはまだ乗せていないが、設定ファイルベースでインデントの仕様やカラーリングを設定でき、 ファイルパスベースでそれらのフラグを個別対応したりするのも検討している)

2016で一番作ってよかったのはこのエディタだともう。会社でRailsアプリケーションを書いているときも、個人でプログラムを書いているときも ドッグフーディングしている。いい面でも悪い面でもAcmeとSamの両方からいいとこ取りをしようと思っていて、 つけていない機能はある意味で「AcmeにはあるけどSamにはないし、あまり僕には必要ないので」と割り切っている。

読んだ本

めぼしいところはコレくらいだった。業務のほうが諸々忙しくあまり読書に時間をかけられなかったのが心残り。

今年は色々読むべきとされてる本の読めていないものたちをを読みたいとおもう。

学んだ言語・技術

  • Rust
  • Golang
  • RxSwift
  • Kotlin
  • Clean Architecture

業務の方は今のところ主にRails, Swift, Javaあたりで済むし、今年の頭あたりはプロダクトの忙しい時期でも合ったので とりあえず作らなければという形で技術というよりは、アーキテクチャをまっとうに組むという感じでやってきたが 年の後半になってプロダクトが落ち着いてきたので、色々と長期的なことを考える時間が取れた。

その中で関数型言語としてRustを学んで勉強会に顔を出したり、 すこしまだ様子見とおもっていたGolangもある程度導入事例が増えてきたので学んでみた。

肌感としてはGolangはまだ仕様に納得行かない部分もあるが(VendoringとかAliasとか)それでも、その納得行かない部分がコミュニティでも 確かに議論の対象にはなっているようだったので雲行きは怪しくないだろうと思って今後プロダクトに導入を進めることにした。 手始めに一部のサーバーサイドの機能をgRPCで分割して導入した。

RxSwiftやKotlin, Clean Architectureについては、 モバイルアプリケーションのリファクタリングをすすめるにあたって大きな方針として検討し、導入を開始した。

今年の目標

競技プログラミングの勉強

競技プログラミングはなかなか手を出しづらく、学生時代になんどか取り組んだがそのままにしていたが 今年はちゃんと取り組みたいと持っている。

ブログをちゃんと書く

ブログをちゃんと書こうともう、と言うかそもそもブログのネタがちゃんと見つかるように色々とやりたい

WebVR

A-Frameあたりをちゃんと触ってWebVR周りに触れていきたいと思う。