記事

間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価

システムアーキテクチャ

間違いだらけのソフトウェア・アーキテクチャ―非機能要件の開発と評価を読んだ。 2010年に初板が発売された割と古い本ではあるが、今にも通ずるソフトウェア・アーキテクチャの話がかなり砕けた表現で書かれている。 この年代では自分はまだ学生だったので時代背景はわからないが、アーキテクトという存在がこの10年で結構変わったんだろうなぁという印象を持った。 技術書というよりエッセイ本なので、技術的な要素のみ...

アーキテクチャ システム設計

権限管理の設計について調べてみた

システムアーキテクチャ

概要 権限管理の設計について事例を調べてみたのでメモしておく。 調査メモ 調査した情報を整理してみたが、わかっていないこともあるのでちゃんと整理しきれていない。 権限を構成する要素 権限は次の要素で成り立つものと考えられそう。 誰が(Principal) 何に(Resource) 何を(Action)していいか(ALLOW)、いけないか(DENY) 権限設計の手法 設計手法としては次のようなも...

ABAC ACL RBAC 権限管理 システム設計 リンク集

単体テストの考え方/使い方

アプリケーション

単体テストの考え方/使い方を読んだ。 質の高いテスト設計の為に必要な考え方やアプローチがまとめられている。テスト手法に留まらないテスト設計の本であり、テスト関連の本の中でもあまり類を見ないものだと思われる。 良いテストは、リグレッションへの保護、リファクタリング耐性、フィードバックの迅速さ、保守性を備えているが、これらを全て満たすのは難しいため費用対効果を考える必要がある。本書はその考え方を示す実...

テスト 設計

ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには

システムアーキテクチャ

ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするにはを読んだ。 トレードオフはドキュメントには書かれないことがある。何かを選択した理由は書かれていても、選択していなかった理由を示していないことは結構あるのではないだろうか。  この本では、設計判断のトレードオフを対照的に考えることの重要さと、ソフトウェア設計におけるトレードオフ事例を学び得ることができる。 後半はトレー...

アーキテクチャ 設計 システム設計

Rubyを学ぶ

アプリケーション

概要 PHPやGoを触ってきた人間はRubyを学ぶ際に取り組んだことを書く。 取り組み 公式ドキュメント 何はともあれはまずは公式ドキュメント。 Rubyとは Rubyの特徴を端的に記している 個別に深く調べておきたい仕様についてはここを参照すれば良さそう。 他言語からのRuby入門 Rubyの言語仕様で特徴的な部分を記している。他言語にはない部分で学ぶべきポイントがまとまっている。 個別に...

Ruby

RubyのModuleについて

アプリケーション

概要 RubyのModuleについてかく。 Moduleとは クラスや他のモジュールに共通のメソッドや定数を提供するための仕組み。 # モジュール定義 module Hi def say_hi puts "Hi!" end end Moduleはクラスと異なり、インスタンス化できない。また継承もできない。 モジュールにはクラスメソッドやインスタンスメソッドを定...

Ruby

Rubyの特異クラス・特異メソッドについて

アプリケーション

概要 Rubyの特異クラスと特異メソッドについてかく。 特異クラス 特異クラスとは、特定のオブジェクトに対してのみ有効なクラスのことを指す。 class Greet def say_hi puts 'Hi' end end greet = Greet.new # 特異クラス class << greet # シングルトンメソッド def ...

Ruby

RubyのProcとlamdaについて

アプリケーション

概要 RubyのProcとlamdaについてかく。 Procとは ブロックをオブジェクト化したもの。ブロックはオブジェクトではない。 このオブジェクトは手続きオブジェクトと呼ばれ、Procクラスのインスタンスとして表現される。 Proc.newまたはprocによって手続きオブジェクトを生成できる。 # Proc.new proc_object = Proc.new { |x| puts x } ...

Ruby

Rubyのブロック構文について

アプリケーション

概要 Rubyのブロック構文についてかく。 ブロック構文とは 他メソッドにコード断片を渡すことで、そのメソッド内で処理を実行させることができる構文。 do..endまたは{}を使って定義する。ブロックは引数を受け取ることができる。 # do..end [1...3].each do |number| puts number end # {} [1...3].each { |number| p...

Ruby

Rubyのシンボルについて

アプリケーション

概要 Rubyのシンボルについて書く。 シンボルとは 任意の文字列と対に対応するオブジェクト。 内部実装では、整数として管理されている。 :symbol :'symbol' %s!symbol! シンボルはSymbolクラスのオブジェクトであり、文字列はStringクラスのオブジェクトである。そのためメモリ効率が良い。 文字列と違い、シンボルは同一のオブジェクトである。 # ...

Ruby