SF(すごくふつう)なブログ

記録・メモ・自己啓発・他

2016年最初のメモ

メモ的なもの。

  • 閉塞感の解消
    • 何か専門分野(これは人に負けない、というもの)を見つけたい
    • 去年1年を振り返って、「プログラミング言語」に対する興味は持続していた
    • プログラミング言語の興味を拡大させ、もっと一般的な「言語」に対する興味にできる?
    • それとももっと理論的な分野(形式言語・パーサージェネレータ等)を強めるべき?
    • 正規表現エンジンとかはちょっと作ってみたいかなと思っていないこともないこともないこともない
    • ドメイン駆動開発はちゃんと本を読もう
    • アプリエンジニアとして成長した先に何があるのかを知りたい
    • 抽象的な興味を具体的な目標に落とす能力がほしい
  • 仕事と個人の能力向上の両立
    • 仕事ではマニーにつながることが要求される
    • 個人の能力向上はマニーに直結しない(ことが多い)
    • あれ、どうにもできなくね…
  • もう深く踏み込めない領域に対する未練を断ち切ろう
    • データ分析、今から統計をイチから学ぶのは無謀だね、世の中にはそういう未知を極めたPh.D持ちがうようよいる
    • 機械学習、なんとも言えない、頑張るべきだとも感じている
    • アニメ(業界)に対する漠然とした興味・羨望
      • 最近3Dのアニメ流行ってるし、そこらへん頑張れば関係した世界に飛び込めるんじゃないかという思い
      • ガルパン劇場版のエンドロールにも「システムマネージャ」みたいな人がいたし、でもそれはそこまでモチベーションにならないよね

個別分野の取組方法

  • 機械学習
    • やっぱ逃げちゃだめだ
    • いやでも一人でどうやって勉強するの
    • 勉強会とかあるのかな…
  • テストコード
    • Serverサイドは書こう、特にLambda使う場合は非常に書きやすい
    • クライアントは…
    • クライアント側はある程度大規模にならないと書くモチベーションが生まれない
  • インフラ
    • へんじがないただのしかばねのようだ、でも何か頑張れる気はしている
    • Lambdaは頑張れる
    • Dockerは馬鹿でも使えるようになって、かつDockerによってどのくらい数字のインパクトが出るのか、という記事がいっぱい出てきたらやる(というかまぁそうなったら皆やらざるを得ないという話か…)

2015年の棚卸し

振り返るのも大事だなと思ったので。

月ごと

1月

あまり記憶にないけど、多分DevOps周りの何かをやろうとしてもがいてた。Puppetとか触って満足していた頃。

2月

多分Goを触り始めた時期。仕事はサービスのリリース時期で非常に辛かった。あと初めてデブサミに行った。

3月

勤め先でUnityの開発合宿がある。フロントもいいな〜と思う。ただこれ以降Unityに触れることは一度もなかった。

4月

仕事の環境が変わり、Javaのバックエンドを中心に触る。相変わらずGoいいなーと思っていたけど、勤め先のチームのリーダーから色々ツッコミを受ける(Goがジェネリック持ってないとことか、言語設計が古いこととか)

5月

Node.jsでサービス運用のためのツールを作る。Nodeいいなーと思う。

6月

確かこの頃からNode学園にチラチラ参加するようになった…気がする。

7月

仕事でAndroid側もやることになり(ネイティブアプリのサービス)、色々と世界が開ける。

この頃から、できるだけ仕事はフロント(というか非インフラ)な部分をやりたいと思い始める。サーバーレスという単語も最近出てきたけど、僕は全面的にその方向性を支持している。

8月

Androidフィーバー中。Rustに少しだけニアミスするタイミングがあったが、難しさにギブアップ。

Goでインフラ管理用のツールを書いた。(プログラムを長期稼働させた際のメモリリークが問題になっていたので、そこら辺をクリアするために色々と頑張った)。

9月

相変わらずJavaでバックエンド&AndroidScalaもちょっとやってみる。

10月

相変わらずJavaでバックエンド&AndroidAndroidのことが少し分かり始める。

11月

ほぼAndroidだけ。やっぱりフロントは慣れないと色々難しい。(アニメーションとThreadはサーバーサイドからやってきたエンジニアにはなかなか難しかった)

あとGoで簡単な言語実装を行う。

github.com

12月

Androidとインフラ少し。AWS Lambdaを使う機会があって、サーバーレスの魅力を存分に感じることができた。

まとめ

プライベートは仕事とは全然別のことやってやる!と思ったけど、やっぱり仕事に追われてなかなか出来なかった。特に今の職場環境では自分のスキルアップも評価の項目に入るので、思うように取り組めず(スキルアップするためには結局自分のプライベートな時間も使うしかない、でもそれ仕事の評価にも関係するんだ、と思うとなんかモチベを上げられなかった)

この1年で把握できた自分の癖は、

  • あらかじめ「〇〇やる!」と宣言して取り組む → 絶対にできない、やる宣言した時点でやれた気になっちゃってるのかもしれない
  • 流行ってるからやる → これも以外と無理だった、最初取り組めるけど長続きできない
  • 自分が興味が強いからやる → これはギリギリ継続できるかもしれないと思えた、特に言語実装とかは自分のペースでできるから良い。ただ他人からの評価が貰いづらい(特に仕事との兼ね合いが…)

という感じで、とにかく自分の興味を伸ばす方向で何かをやるしかないなと思った。当たり前といえば当たり前なんだけど。

ただ一口に「興味」と言っても難しいと思うので、僕はより「一般化した興味」を考えるようにした。つまり個別具体的な技術じゃなくて、もっと目的に近い(例えば「〇〇を使って何かする」、じゃなくて「何かをしたいから、そのために〇〇を使う・作る」というような)ことを考えた。で、今の自分がどういう一般化された興味を持っているというと、

  • インフラ管理が必要ないアプリ開発の実現
    • Lambdaはやっぱり良いと思えるし、FirebaseやParseも気になる。Meterorも。
  • 分散したインフラ環境を用意に扱える環境の実現
    • yonでやりたいこと。
  • モバイル端末をもっとプログラマティカルにする
    • 言語実装への興味の派生系、Smalltalk的な環境を自分で作ってみたい。あと、電車内で立ちながらサクッと何かアルゴリズムの勉強(コーディング)ができたらいいな〜と思っている。
  • テストコード、どうしよう
    • 色々とテストコードとの向き合い方について考え直す必要があるなと感じている。自分が一から書くテストコードならパラメトリックにしたりしてメンテナンス性をある程度考えてモチベを保てるけど、そうでないベタ書きのテストコードを前にしてにあまりにモチベを保てない自分に驚きを感じたので。

というような感じ。

逆に興味の度合いがやや減ったのは、

  • 機械学習
    • このビッグウェーブに乗り遅れるちゃダメだ!と思ってたんだけど、やっぱりそれほどやる必要はないかなと思った。多分そのうち頭が良い人たちがAPI化してくれて、仕組みを知らなくてもそれなりに使えるようになると思う。

という感じで、流行りから目を背けようとしている感じが辛い。でも強い興味を持続できないから技術を自分のものにできない可能性が高いので、やらないという選択肢も大事なのではないかと思う。

とにかくこの1年は、個別具体的な技術に触れて満足していた自分からの脱却を図る(図りたい)という点につきた。まだそれを自分が納得いくレベルで実践できていないと思うけど、できるだけその方向性で取り組めれば良いと思う。(曖昧な言葉を使うのは、その言葉で自分を縛りたくないから)

SerfをAWSで使った

serfとは

serfdom.io

クラスタ管理用のツールです。クラスタ全体にメッセージ送信を行ったり、クエリーを実行することで各ノードの色々な情報を収集したりすることが出来ます。

serfの持っている機能としては、

  • クラスター形成機能
  • ノードに対するイベント通知機能
  • ノードに対するクエリー実行機能(クエリーを実行すると、各ノードにイベントが通知され、なおかつそのイベントの実行結果を収集することができます)

といったものがあります。

今回やりたかったこと

あるアプリケーションの動作に問題が発生していました。

  • 問題の動作

    • アプリケーションがメモリリークを起こしており、long runningさせると一定時間経過後(350時間経過後)ランダムにOutOfMemoryを起こしてアプリケーションが終了してしまう
  • 期待する動作

    • (A) アプリケーションがOutOfMemoryを起こす前に再起動させ、メモリリークをリフレッシュする
    • (B) アプリケーションは複数のサーバーで動いていて、それぞれのアプリケーションは排他的に再起動する

期待する動作Aは何かしらのプロセス監視ツールで実現できますが、Bはよくあるツール(例えばcron)でやろうとすると非常に手間がかかります。今回は上記のBをシンプルに実現するため、また技術的な興味からserfを使うことにしました。

続きを読む

当ブログのコンテンツの引用は自由です。