🧊

2017年の振り返り

もっと早く書こうと思ってたのに、気付いたらもうこんな時間だった・・。

ちなみに2016年にも振り返り記事を書いてて、そこで2017年はこうする!って言ってたやつが以下。

  • 引き続き登壇できるときに登壇する
  • SPAやらアプリケーション設計まわりで着実に仕事をこなす
  • けど本腰は、Live動画とかWebRTCとかServiceWorkerとか、競技人口の少ないおもしろそうなことを追う

だった。
振り返ってみると・・・、

  • △: 登壇はしてたけど、そんなにしまくったりはしてない
  • ○: こなしてたと思う
  • ○: 追えてたと思う

というわけで、割と有言実行な一年だった感があるかな・・?
では2017年の振り返り、スタート!

さわった技術たち

仕事やら趣味プロやらでそれなりにさわった技術たちの一覧がこちら。

  • React
    • ReactRouter, Redux, facebook/flux, i18n, MobX, React Native
  • Angular
    • AngularJS, Angular2.x
  • Vue
    • Vuex
  • HLS.js
  • Amazon Cognito, Auth0
  • Docker
  • WebRTC
    • SkyWay
  • Socket.IO
  • Jest

という感じで、いわゆるTHE フロントエンドをやりつつ、動画とかWebRTCに半身を捧げた感じ。

詳細

動画とかWebRTCとか

簡単に見えて難しい・・。

単にHLSを再生するだけとか、P2Pでつなげるだけとか、そういうのはすごく簡単にできる時代。
ライブラリもたくさんあるし。
ただそこから一歩踏み込むと、途端に難易度が上がってくる。簡単に越えられない壁とは正にこれ。

特にWebRTCなんかはブラウザ差異に久しぶりに苦しめられるフィールドで、過去に何かしら経験があって、精神的な耐性がついてないと発狂すると思うw
って言ってるうちに、各ブラウザのAPIが統一されてしまうやーつでもある。

まぁここは単純に知ってるかどうかが全ての世界でもあると思ってるので、

  • 自分で頑張って覚えるか
  • 詳しい人の近くに行くか

かなーと。

フロントエンドに飽きてる

新鮮さやあらたな発見・学びが少ない・・。

程度はあれどAngularもVueもReactも全部やれた(決してやりたいとは言ってない)のは、受託な会社ならではって感じかなーと。(ずっと同じことしてる人ももちろんいるんやけど)

ただこういう風に見てると、どのライブラリもだいたい同じことをやろうとしてて、差異をそこまで意識しなくなってくるもん。
もちろん細かい記法やらクセはあるけど、ドキュメントとかコード見ればだいたいわか(った気にな)る。

まぁ好き嫌いもパフォーマンスに影響するので、ある程度は割り切りつつ、自身の精神衛生のために適度に毒を吐き出していきましょう(˘ω˘ )

似たようなのは2018年もまた出て来るかもしれないけども、実質的な変化はWebComponentsとES Modulesまわり次第かなーという感じなので、そんなにすぐ変化はしなそう + どれか1つ追いかけてれば、自然に移行してったりするのではないかと予想中。

PWAとかそっち系をがっつりやれれば、また興味は取り戻せそうではあるが、仕事でやることはなさそうなのでアレです。

MobXのContributorしてた

ちょっとしたPRをいくつかと、Issue対応なのでがっつりではないけど。

また最近少しバズってたけど、別に流行らせたいという意図もアレも特にないので静観です(˘ω˘ )

次期v4/v5では大きめのリライトとか再設計とかもあるらしく、もうちょっとシュッとするはず。

そのほか

そういえば機械学習をかじった

尊敬する某氏に薦められて、CourseraのAndrew先生の授業を一通り受けて、とりあえず修了した。
ただし身についたと言えるかは怪しい・・。

そもそも何に活かせばいいのかわからないのと、機械学習の根本はただの数学。その数学力が圧倒的に足りなくて付け焼き刃感がすごい。

上手く身近な例に当てはめて活用できるイメージが見つかればまたよかったのかなー、なんかもったいないなーという感じ。
知識として知ってるだけでもいろいろ違うとは思うのでよしとする。

そういえばElixirもかじってた

プログラミング言語としての側面は、まぁなんとかなる。
Phoenixとかの既存のプロジェクトでそれっぽいコードをコピペで書くのもたぶんできると思う。

ただそこから踏み込んで、

がわかってなくて、そこが趣味プロの限界かなーと思った。

ずっと人のコード読んでた

コードレビューとかコンサルとかリファクタとかヘルプとか、人のコードを読んで直す仕事がすごい多かった一年やと思う。

コンサル依頼で見せられるコードって、ある程度出来上がったプロジェクトであることがほとんどなんですが、まあ抱く感想はだいたいこれです。

「どうしてこんなになるまで放っておいたんだ!」

まあどんなクソコードであろうとちゃんと稼働してて(バグがあろうがなかろうが)、それで金を生み出してるなら別に良いと思う反面、そういう依頼は早めに出すことをオススメします。
愚直にレビューしたとしても、それはもう今さらどうしようもないよねーってなるので。

コードスタイル云々に関しては、最近だとPrettierがどうのこうので解決に向かってる感があるかもしれませんが、仕事でがっつり読み込む必要がある場合に、そっちのコードスタイルってどーでもいいよな・・というのが最近の感想です。
むしろLintは通ってるけど、そもそもどういう思考回路でこれ書いたん??なんでこっちは違うの??みたいなトンデモコードを読み解くほうがよっぽどしんどいです。

どんな流行りのライブラリやらフレームワークを使ってようが、結局バグが出るのはその外側・使い方の部分なので、やっぱり中の人間が進歩しないと辛いよねーという感じ。明日は我が身。

そういう意味では、自分でコード書いてるだけでは気付かないこととか、後から読ませるためにこうすればよいとか、そういう面は鍛えられる仕事分野なので、受託な会社にいる以上みんなやったらいいと思いました。

というわけで2018は

もっとWebRTCやっていき

とりあえず目下のところはWebRTCかなーと。
ただこのWebRTCというやつは底なし沼のような感じで、少なくともこれらは必要に見えてる。

  • 低レイヤーな部分
    • プロトコルだとか
    • SDPの仕様だとか
    • コーデックの差異が云々とか
  • アプリ要件としての定番の部分
    • P2Pがスケールしないならどうするのとか
    • どうやってルーム通話を実装するとか
    • シグナリングって何すんのとか
  • ブラウザ寄りの部分
    • ブラウザごとの挙動の差異だとか
    • RTCPeerConnectionとかのJSのAPIだとか
  • その他の不可避な部分
    • MediaStreamだとか
    • モバイルにおけるvideo要素の扱いとか

まぁ知らないことが多いのはそのままモチベーションにつながるタイプなので、しばらくは満足できそうな気がする。

それに加えてWebRTCやってます!って言うためには、THE フロントエンドな領域にも精通してないとダメだと個人的には思っててるのでそこらへんも引き続き。
WebRTCはあくまでただのAPIなので、それだけではマトモなサービスやらアプリは作れない。正確には作れるけど、メンテできないスケールできないから・・。

今のところ個人的な観測範囲だと、THE WebRTCな部分に強い + THE フロントエンドも強い人は知らないので、そのあたりのポジションを狙ってみようかなーと目論んでおる次第。

なんかまたサービス作ろうかなー。

まとめ

Twitterには流してないけど、2017年は結婚したりとプライベートも変化のあった年で、2018年も何かしらよい感じにしていきたい所存。

それではみなさま良いお年をー。