アプリ開発で知っておきたい事前知識一覧


## 開発戦略

* [アジャイルソフトウェア開発宣言](http://agilemanifesto.org/iso/ja/manifesto.html)
* [スクラム](http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%A0_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%29)
* [テスト駆動開発](http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA)
* [継続的インテグレーション（CI）](https://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)
* [セマンティック バージョニング](http://shijimiii.info/technical-memo/semver/)
* [Git-Flow](http://www.atmarkit.co.jp/ait/articles/1311/18/news017.html)
* [UMLダイアグラム](https://ja.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E#UML.E3.81.AE.E3.83.80.E3.82.A4.E3.82.A2.E3.82.B0.E3.83.A9.E3.83.A0)
* [Convential Commits](https://www.conventionalcommits.org)
* [Twelve-Factor App](https://12factor.net/ja/)

## リスク管理

* [埋没費用・コンコルド効果](http://dic.nicovideo.jp/a/%E3%82%B3%E3%83%B3%E3%82%B3%E3%83%AB%E3%83%89%E5%8A%B9%E6%9E%9C)
* [傍観者効果](https://ja.wikipedia.org/wiki/%E5%82%8D%E8%A6%B3%E8%80%85%E5%8A%B9%E6%9E%9C)
* [コンウェイの法則](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%AB%E3%83%B4%E3%82%A3%E3%83%B3%E3%83%BB%E3%82%B3%E3%83%B3%E3%82%A6%E3%82%A7%E3%82%A4)
* [パーキンソンの法則](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%BD%E3%83%B3%E3%81%AE%E6%B3%95%E5%89%87)
* [機会費用（経済学）](https://ja.wikipedia.org/wiki/%E6%A9%9F%E4%BC%9A%E8%B2%BB%E7%94%A8)
* [収穫逓減（経済学）](https://ja.wikipedia.org/wiki/%E5%8F%8E%E7%A9%AB%E9%80%93%E6%B8%9B)


## 問題解決

* [批判的思考](https://ja.wikipedia.org/wiki/%E6%89%B9%E5%88%A4%E7%9A%84%E6%80%9D%E8%80%83)
* [科学的方法](http://ja.wikipedia.org/wiki/%E7%A7%91%E5%AD%A6%E7%9A%84%E6%96%B9%E6%B3%95)
* [分割統治法](http://ja.wikipedia.org/wiki/%E5%88%86%E5%89%B2%E7%B5%B1%E6%B2%BB%E6%B3%95)


## プログラミング概念

* [オブジェクト指向設計原則（SOLID）](http://d.hatena.ne.jp/asakichy/20090122/1232879842)
* [DRY（Don't Repeat Yourself）](http://ja.wikipedia.org/wiki/Don%27t_repeat_yourself)
* [文脈自由文法](https://ja.wikipedia.org/wiki/%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E6%96%87%E6%B3%95)
* [正規表現](https://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE)
* [データ構造](http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0)
* [ソート](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%88)
(https://pragprog.com/articles/tell-dont-ask)）
* [求めるな、命じよ](http://d.hatena.ne.jp/asakichy/20090505/1241476035)  （英: [Tell, Don't Ask]
* [KISS原則](https://ja.wikipedia.org/wiki/KISS%E3%81%AE%E5%8E%9F%E5%89%87)
* [YAGNI](https://ja.wikipedia.org/wiki/YAGNI)
* [MVC](http://ja.wikipedia.org/wiki/Model_View_Controller) | [MVVM](https://ja.wikipedia.org/wiki/Model_View_ViewModel)
* [設定より規約](http://ja.wikipedia.org/wiki/%E8%A8%AD%E5%AE%9A%E3%82%88%E3%82%8A%E8%A6%8F%E7%B4%84) 
* [関心の分散](http://ja.wikipedia.org/wiki/%E9%96%A2%E5%BF%83%E3%81%AE%E5%88%86%E9%9B%A2)
* [関数型言語](http://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E)
* [デザインパターン](http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29)
* [ポリモーフィズム](http://e-words.jp/w/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0.html)
* [単一障害点](http://ja.wikipedia.org/wiki/%E5%8D%98%E4%B8%80%E9%9A%9C%E5%AE%B3%E7%82%B9)
* [競合問題](http://ja.wikipedia.org/wiki/%E7%AB%B6%E5%90%88%E7%8A%B6%E6%85%8B)


## 品質管理

* [ソフトウェア品質](http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%93%81%E8%B3%AA)
  * 保守性 - 新たな要求を満たすために改良する際の容易さ。
  * 可読性 - コメント以外の部分を読んだときの目的や処理の流れの理解しやすさ。
  * 簡潔性 - 無駄な情報がないこと。
  * 一貫性 - 記法や用語が一貫していること。
  * 信頼性 - ユーザーに影響するエラーを防ぎ、目的の機能が実現されていること。
  * ユーザビリティ - ユーザーにとって便利で実用的であること。
  * スケーラビリティ - 利用者や仕事の増大に適応できる能力・度合いのこと。
* [リファクタリング](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%29)
* [結合度（カップリング）](http://ja.wikipedia.org/wiki/%E7%B5%90%E5%90%88%E5%BA%A6)
* [割れ窓理論﻿﻿](https://ja.wikipedia.org/wiki/%E5%89%B2%E3%82%8C%E7%AA%93%E7%90%86%E8%AB%96)


## データベース

* [リレーショナルモデル](https://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82%E3%83%A2%E3%83%87%E3%83%AB)
* [リレーションの正規化](http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%AD%A3%E8%A6%8F%E5%8C%96)
* [トランザクション](http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E5%87%A6%E7%90%86)
* [トランザクション分離レベル](http://gyouza-daisuki.hatenablog.com/entry/2013/11/19/150838)
* [N+1 問題](http://ruby-rails.hatenadiary.com/entry/20141108/1415418367)
* [排他制御](http://codezine.jp/article/detail/6764)
  * [悲観ロック](http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html)
  * [楽観ロック](http://api.rubyonrails.org/classes/ActiveRecord/Locking/Optimistic.html)
  * [デッドロック](https://technet.microsoft.com/ja-jp/library/ms177433%28v=sql.105%29.aspx)
* [レプリケーション](http://e-words.jp/w/%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html)
* [パーティショニング（シャーディング）](http://ja.wikipedia.org/wiki/%E5%88%86%E5%89%B2_%28%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%29)
* [索引（INDEX）](https://ja.wikipedia.org/wiki/%E7%B4%A2%E5%BC%95_(%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9))
* [マイグレーション](http://www.rubylife.jp/rails/model/index5.html)
* [単一テーブル継承](http://ja.wikipedia.org/wiki/%E5%8D%98%E4%B8%80%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E7%B6%99%E6%89%BF)


## 通信

* [ドメイン・ネーム・システム](https://ja.wikipedia.org/wiki/Domain_Name_System)
* [HTTPプロトコル](http://ja.wikipedia.org/wiki/Hypertext_Transfer_Protocol)
* [HTTPステータスコード](http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89)
* [RESTful API](http://e-words.jp/w/RESTful_API.html)
* [JSON](http://ja.wikipedia.org/wiki/JavaScript_Object_Notation)
* [出版-購読型モデル（Pub/Sub）](https://ja.wikipedia.org/wiki/%E5%87%BA%E7%89%88-%E8%B3%BC%E8%AA%AD%E5%9E%8B%E3%83%A2%E3%83%87%E3%83%AB)


## 運営

* [ハートビート](http://e-words.jp/w/%E3%83%8F%E3%83%BC%E3%83%88%E3%83%93%E3%83%BC%E3%83%88.html)
* [フェイルオーバー](https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC)
* [ロードバランシング](http://e-words.jp/w/%E3%83%AD%E3%83%BC%E3%83%89%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B7%E3%83%B3%E3%82%B0.html)


## セキュリティ

* [暗号化](http://www.atmarkit.co.jp/ait/articles/1504/27/news032.html)
* [クロスサイトリクエストフォージェリ](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%AA)
* [クロスサイトスクリプティング](https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
* [SQLインジェクション](https://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3)
* [中間者攻撃](https://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E8%80%85%E6%94%BB%E6%92%83)
* 上記以外にも色々亜種があるので、詳しくは[OWASP](https://www.owasp.org/index.php/Japan)を見るといいと思うよ

## 国際化

* [internationalization(i18n)](http://ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E5%8C%96%E3%81%A8%E5%9C%B0%E5%9F%9F%E5%8C%96)