アルパカログ

プログラミングとエンジニアリングマネジメントがメインです。時々エモいのも書きます。

【読書メモ】入門監視 / 知っておこう!監視のアンチパターン

監視とは、あるシステムやそのシステムのコンポーネントの振る舞いや出力を観察しチェックし続ける行為である。

「入門監視」は、監視の世界を基礎からわかりやすく説明してくれます。

これまでオンコール担当すらしたことがないくらい、監視に関わりがなかった私が、初心者なりに「入門監視」で勉強になった部分をまとめました。

「え、そんなことも知らなかったの?」と多分に思われるかもしれませんが、それくらいこの本が丁寧に書かれていると解釈していただければ幸いです。

www.oreilly.co.jp

続きを読む

【Python3】範囲を限定してインスタンス/クラスメソッドをmockする

Pythonのテストでメソッドをmockするとき、インスタンスメソッドはよくMagicMockを使ってmockしますが、クラスメソッドの場合はmockするとテストケースが終わっても影響が残り続けてしまいます。

これはクラスとインスタンスのライフサイクルの違いによるもので、同じインスタンスを使い回している場合にはインスタンスメソッドにも同じことが言えます。

ではどうやって範囲を限定してメソッドをmockするかというと、unittest.mock.patch を使います。

from unittest.mock import MagicMock, patch

with patch('module.Foo.bar', MagicMock(return_value='mocked value')):
    # call method

こうしておくとwithブロック内においてmodule.Foo.barメソッドは'mocked value'を返すようになります。

こちらもあわせて読みたい

alpacat.hatenablog.com

alpacat.hatenablog.com

alpacat.hatenablog.com

【AngularFire2】テストでsnapshotChangesをスタブする

Angular.js + Firestoreという構成ではAngularFire2を使うケースが多いと思います。

AngularFire2ではFirestoreからデータ(コレクション)を取得するとき、valueChanges()snapshotChanges()の2つの方法があります。

このうちvalueChanges()はドキュメントIDなどのメタデータを含まないデータそのものだけを返しますが、更新系の処理を行うにはsnapshotChanges()を使ってメタデータを含めてデータを取得する必要があります。

テストの際、メタデータを含まないデータのみを返すvalueChanges()をスタブするのは簡単です。しかし、メタデータを含めたデータを返すsnapshotChanges()をスタブするのは少し面倒です。さらに悪いことに、調べてもあまり情報が出てきません。

そこで今日はsnapshotChanges()のスタブの例を紹介したいと思います。

続きを読む

AIプロジェクト失敗...ITmedia NEWSにインタビューが掲載されました

会社で取り組んでいるAIプロジェクトの失敗について書いたことは以前お知らせしましたが、これをきっかけにITmedia NEWSさんに取材いただくという幸運に恵まれました。

何でもかんでもすぐ「AIだ!」と声高に叫ばれる昨今、ちょっと胡散臭さを感じている方も少なくないんじゃないかなぁと思っていて、私もその一員なのですが、今回は失敗事例をありのままに公開しているので、ぜひそういう方に「なーんだそんなことか」と笑っていただければ幸いです。

www.itmedia.co.jp

続きを読む

全然わからない。俺たちは雰囲気でマネージャーをやっている。

自分は今、コード書かずにマネジメントしかしてなくて、そんなポジションの人にそれほど価値ないでしょ、とか思ってしまうけれど、こういうポジションの人がいないチームの話とか聞くと、やっぱりいたほうがいいんじゃないか、と思うし、ほとぼりが冷めるとまた自分は無価値のように思えてしまう。

こんな心境の吐露を「エンジニアリングマネージャのキャリアについての悩み」で拝見して、私も何か発信しなければと思ったのがこの記事のきっかけである。筆者のdaiksyさんは、

エンジニアマネージャってなんか実績を示しづらいので、世の中の数多のマネージャ職に埋もれて、自分にスポットが当たりづらい、結果、キャリアに不安が拭えない、みたいなとこないです?

とも述べていて、これら2つのメッセージに込められた心の葛藤は、全てのエンジニアリングマネージャー(以下EM)が感じていることではないかと私は思う。少なくともEMの一人として私はそう感じたので、私なりの考え、何に悩み、どうしたいと思っているかを述べてみたい。

続きを読む

【読書メモ】ファクトフルネスは世界は悪化しているという悲観を打ち消してくれる

ファクトフルネス 10の思い込みを乗り越え、データを基に世界を正しく見る習慣』を読んだので読書メモです。本は400ページを超えるボリュームなので、私なりに重要だと思った部分をまとめてみました。

f:id:otoyo0122:20190216132937j:plain:h300

ファクトフルネスでは、私たちが本能的に陥ってしまいがちな思い込みを10個に分類し、1つ1つどうやって克服すれば良いかが説明されています。

ファクトフルネスを読むことで、物事をフラットに判断するための見方・考え方が身につき、「世界は悪い方へ向かっている」という悲観的な思い込みは全くの的外れであることに気づかせてくれます。

テロや航空機事故のように、滅多に起きない悲惨な事件ほどニュースになります。当たり前ですが、「今日も飛行機が無事に着陸しました」はニュースになりませんよね。

世界の航空機事故による2017年の死亡者数は0だったそうですが、知ってましたか?

そういうことです。では本題に入りましょう。

続きを読む

GoでサイボウズガルーンのREST APIクライアントを書いた話

以前、ガルーンの予定をSlackからインタラクティブにリスケできるBotを作った話をしました。

このBotを作ったとき、実はガルーンのREST APIのGo向けクライアントがなかったので自作しているのですが、今日はその自作したガルーンREST APIクライアントの話をしたいと思います。

GitHubリポジトリは下記です。

続きを読む