開発日報

窓際エンジニアの開発備忘。日報は嘘です。

【感想】12のソフトウェア・アーキテクチャの落とし穴とその避け方

はじめに InfoQ に掲載された記事がとても面白かったので備忘も兼ねて感想を書こうと思う。 www.infoq.com 以下に記事に記載された著者の主張と感想を記載する。 一人の人間がすべての決定を下したり、影響を与えたりしてはならない。代わりに、適切なチーム…

スクラム開発がエンジニアから成長機会を奪うかもしれない話

おことわり 最初に断っておきますが、私はスクラム開発反対の立場をとっているわけではないです。また、スクラムマスターでもないのでスクラム開発について誤った見解を持っている可能性も大いにあります。 また、これから記載するスクラム開発のペインはあ…

【備忘】開発チームの自己診断能力の欠如がもたらす弊害と解決策についての考察

背景 筆者はソフトウェア開発チームの一員として日々開発を行なっているが、ここ最近2週間毎に区切っている開発期間に実施すべき開発タスクが未達になってしまう状態が続いている。 いわゆるスプリントゴール未達成ってやつ。 この原因を探り、改善すべく施…

【防備】Angular学習参考メモ

RxJs周り qiita.com SubscribeとPipeの違いとかAngular触っててよく分からなくなる箇所について解説されている 並列処理すげえ hoge(userId) { // user取得と会社情報取得は並列で行われます。 // forkJoinの引数は配列で記述しないと非推奨の警告が出ます。…

テストダブルの原則 ② ~テストダブル利用のテクニック~

テストダブル利用のテクニック モッキングフレームワーク モッキングフレームワーク:テストダブルをテスト内で容易に作成できるようにするフレームワーク。 C++では「google mock」、pythonでは「unittest.mock」などがある。 モッキングフレームワークはオ…

テストダブルの原則 ① ~概要と導入について~

テストダブルの原則 ユニットテストはコードが複雑になるに連れて、書くのが難しくなってくる。 また、本番のコードがいくつもの外部APIを呼び出していたり、その結果をDBに保存していたりする場合、それらの挙動を本番コードのみのユニットテストだけで再現…

【忘備】ブロックチェーン基礎 ~ブロックチェーンのトランザクション~

ブロックチェーンのトランザクション まず、トランザクションがあって そのトランザクションが一連の手順を踏んで最終的にブロックチェーンに格納される。 ブロックをネットワーク全体にブロードキャスト 各ノードは受け取ったブロックを検証する [Q.] なぜ…

【忘備】Terraform基本構文 ~外部から変数値を与える~

変数の上書き方法 外部から変数値を与える方法は3種類 環境変数:環境変数へあらかじめ設定してある値を利用 TF_VAR_【Name】 変数ファイル:あらかじめ決められた変数ファイル名のファイルに指定 terraform.tfvars コマンド引数:以下のコマンド引数で指定…

【忘備】イーサリアム基礎 ~Web3 (js) とは何か~

Web3とは何か web3 : イーサリアムをリモートまたはローカルで操作するJSライブラリ。Dappとブロックチェーンをやり取りするためのAPIを提供する。 イーサリアムブロックチェーンとスマートコントラクトの橋渡しをする(JSON-RPC) フロントエンド、Web3、ブ…

【忘備】Terraform基本構文 ~変数とデータ型~

変数 HCL2で利用可能な変数は2種類 locals : ローカル変数。プライベートな変数で外部から変更はできない。 variables : 外部から変更可能な変数。コマンドライン実行時にオプションやファイル指定で上書きできる。 locals の定義と参照 「localsブロックで…

【忘備】グーグルのソフトウェアエンジニアリング ~ ユニットテスト ③ -明確なテストを書く- ~

明確なテストを書く まず、初めに申し上げておきたいのはテストの失敗は良いことである。 なぜなら、失敗したテストは、エンジニアに有用なシグナルを提供し、ユニットテストが価値を提供する方法のうち主要なものだからである。 テストの失敗理由 テストの…

【忘備】Angular チートシート

nodeバージョン切り替え(n) 参考 $ sudo n list node/12.18.2 node/14.15.4 $ sudo n 14.15.4 新規プロジェクト作成 $ ng n <project-name> コンポーネント作成 $ ng g component <directory/component-name> --routing モジュール作成 コンポーネントをまとめてモジュールとして定義できる。 $ ng </directory/component-name></project-name>…

ブロックチェーン基礎 ~ マークルツリー ~

マークルツリー マークルツリー:バイナリハッシュ木の1種。ペアのデータをハッシュ化し、そのハッシュ値をさらにハッシュ化するといったことをマークルルートと呼ばれるルートノードまで繰り返す。 イメージ H() : ハッシュ関数。 木のどの位置を改ざんして…

ブロックチェーン基礎 ~ ブロックチェーンの構造 ~

ブロックチェーンとは ブロックチェーン:ブロックがチェーンのようにつながったデータ構造 ここでのブロックは、単一トランザクションあるいは1つにつながった複数トランザクションを意味する。 ハッシュポインタ:データブロック自体のハッシュ値。前伊の…

【忘備】グーグルのソフトウェアエンジニアリング ~ ユニットテスト ② -脆いテストを防ぐ- ~

脆いテスト: バグのない無害かつ無関係な変更で壊れるてすと。 変化しないテストを目指す 脆いテストを防ぐため、理想的には「変化しないテスト」を目指す。 → 仕様変更以外の理由で変更しないテストのこと。 プログラム変更の要因 ここではテスト変更の要…