アルパカログ

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

意識が低い人のための生存戦略

新しい年度が始まり、SNS上では「○○にチャレンジします!」といった意気込みがよく見られるようになりました。4月の風物詩ですね。「やります!」と宣言した人のうち、何割が実際に「やった」人になるのでしょうか。私は「やります!」よりも「やった」と言える人に憧れます。「やる」と心の中で思ったならッ!その時すでに行動は終わっているんだッ!

仕事が大好きで寝食忘れて仕事したいという人は少ないと思います。口には出さないものの、働かなくていいのなら働きたくないという人が大半でしょうし、ソフトウェアエンジニアの三大美徳には「怠惰」があるので、ソフトウェアエンジニアは全員そうでしょう。私はそうです。

「AIに仕事を奪われる」というフレーズはもはや聞き飽き、「だったら早く仕事を代わってくれよ」と思いつつも、実際に労働から解放されるにはまだ時間がかかるでしょう。それまで私のように意識が低い人でも、この先生きのこるためにどうするかというのは、ある程度考えておかなければなりません。前置きが長くなりましたが、「意識が低い人のための生存戦略」というテーマで私なりの考えを述べてみたいと思います。

続きを読む

【AngularJS】権限によって表示/非表示を切り替える認可っぽいことをする

AngularJSで権限によって表示したり非表示にしたりといった認可っぽいことをする方法を説明します。

「認可っぽいこと」と言っているのは、データは取得できてしまうものの、非表示にすることでそれらしく見せているためです。ですのでこの方法は、厳密にユーザーに見せてはいけないデータがあるケースでは使用しないでください。

続きを読む

マネージャーを逆評価で殴り続けると死ぬ

チームメンバーからマネージャーへのフィードバックの仕組みは、今や多くの会社で当たり前になってきた。

逆評価がそれで、ここで言う逆評価とは、職場や上司に対する期待や満足度をアンケート形式で回答し、上司にフィードバックするものだ。会社によってはサーベイや360度評価がその役割を担っているかもしれない。いずれにせよ、フィードバックの結果に悩んだり凹んだりしているマネージャーは多いことだろう。私もその一人である。

f:id:otoyo0122:20190316124839p:plain:h280

私はどちらかというと悲観的な性格なので、フィードバック結果を突きつけられると、たとえ良好な結果だとしても「メンバーが気を遣っているのではないか」「本当は何か我慢しているのではないか」と考えてしまうし、悪い結果だとしたらそれがずっと頭から離れなくなる。胃もキリキリする。

もちろん、そんな風にマネージャーに気付きを与え考えさせるのがフィードバックの目的だというのは理解している。しかし実施した以上、改善が求められるのは確かだし、改善に躍起になるあまり他の重大な問題がなおざりにされてしまうのではないかという不安もある。

逆評価やサーベイといったフィードバックの仕組みを否定するつもりは全くない。しかし、フィードバック結果はいつだって頭から離れず思考の何%かを占有する。メンタルが痛むことも珍しくない。だから私たちマネージャーは、フィードバックと上手く付き合っていかなければならないし、その術を知っておく必要がある。

そういうわけで、私なりのフィードバックとの付き合い方を書いてみたいと思う。

続きを読む

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

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

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

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

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

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()のスタブの例を紹介したいと思います。

続きを読む