開発日報

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

備忘メモ

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

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

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

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

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

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

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

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

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

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

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

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

【忘備】イーサリアム基礎 ~ イーサリアム仮想マシンとコード実行 ② -コントラクト実行詳細- ~

スマートコントラクト作成から利用まで 動作フロー (Solidityなどで)スマートコントラクトを書く スマートコントラクトをEVMバイトコードにコンパイルする EVMバイトコードでネットワークにコントラクト作成トランザクションを送る 動作結果 デプロイされ…

【忘備】イーサリアム基礎 ~ イーサリアム仮想マシンとコード実行 ① -概要説明- ~

イーサリアム イーサリアムはプログラム可能なブロックチェーンであり、ユーザーが任意の独自性のある複雑な処理を作成することができる。 EVM EVMはスマートコントラクトのランタイム環境として既往するイーサリアムの実行エンジンである。 全ノードがEV…

【忘備】グーグルのソフトウェアエンジニアリング ~ ユニットテスト① -テストの保守性- ~

Googleにおけるユニットテストの定義 Googleがテストを分類する際に使用する2つの軸 テスト規模:テストにより消費されるリソース、テストが実行されている内容に焦点を当てる テスト範囲:テストが検証を意図する実装コードの量 また、Googleにおけるユニッ…

【忘備】グーグルのソフトウェアエンジニアリング ~ テスト概観 ③ -テスト文化- ~

グーグルのテスト文化醸成のための取り組み 1. オリエンテーション 当初、Googleの新入社員向けのオリエンテーションにはテストについての講義は存在しなかった。が、2005年ころからオリエンテーションの講義に自動テストについての講義が組まれるようになっ…

【忘備】グーグルのソフトウェアエンジニアリング ~ テスト概観 ② -テスト品質- ~

コードカバレッジ テストにおいて、 コードカバレッジ:ある機能のコードのどの行がどのテストにより実行されるか計測する指標。 この指標はあくまでもテストによって実装コードがどの程度実行されているかを確認しているにすぎず、「コードの有用性」を表す…

【忘備】グーグルのソフトウェアエンジニアリング ~テスト概観① -概観解説-~

なぜ自動テストをするのか バグは補足されるのが開発サイクルの後ろになるほど修正のコストが高くつく。開発サイクルの早い段階で高速に自動化テストを回し、バグを捕捉したい。 また、「バグをほそくすること」はテストの同期の一部に過ぎない。ソフトウェ…

システム設計の定石

1. ドメインモデルの考え方で設計する ドメインモデルは業務ロジックをオブジェクト指向で整理する技法 データの整理ではなく業務ロジックの整理 業務の関心事はヒト/モノ/コトで整理できる コトを整理の軸にする 起きてよいこと/起きてはいけなくことの判断…