開発環境自体のセキュリティ

概要

開発会社において、官公庁や大企業側で制作会社に求められる事のあるセキュリティに関する規格等

取得には一定の基準や準備が必要な物もあり、フリーランスなどの個人がこれらを取得するのは難しい。

1 Pマーク

プライバリーマーク制度

2 ISMS 情報セキュリティマネジメントシステム (Information Security Management System)

ISMS適合性評価制度

JIS Q 27001:2006 情報技術−セキュリティ技術−情報セキュリティ

情報セキュリティマネジメントシステム(ISMS)

3 その他

3-1 官公庁でのガイドライン等

府省庁対策基準策定のためのガイドライン

NISC 内閣サイバーセキュリティセンター

DDDドメイン駆動設計 について

ドメイン駆動設計の定義についてEric Evansはなんと言っているのか[DDD]

1 Domain専門知識をいかに明らかにするか?

1-1 仕事の内容を分解しリスト化する。

1-2 割り振る

外部でも使える知識や技術の場合と、その企業特有の場合で割り振る

  • [g] 一般的なドメイン専門知識
  • [o] 企業内ドメイン専門知識

習得にかかる時間軸で2段階にわける

  • [01] 研修期間内(1~6ヶ月)
  • [02] それ以上の期間

この分け方は一般的であるが、セグメントを多くしすぎない事が分類、リスト化を早期に終える事ができる。

2 リスト化以降のドキュメントの分類

2-1 Documen作成

  • 手順書・マニュアル
  • 教育、カリキュラム、概要シート
  • トラブル時、導入時、運用時、チェック確認シート

例)
VPN 接続方法について

  • 導入前の落とし穴
  • 手順書
  • 手順どおりいかない場合のトラブルFAQ

2-2 個人スキルの設定例

  • OS の利用
    • Windows* Linuxディストリビューション(*****) MacOS
    • CUI の利用
  • 開発軸
    • 言語
      • フレームワーク
    • 開発スタイル
      • 要件定義から基本設計・・
  • 検定資格別
    • ※検定要素は General傾向が強くDomainとしての判定は難しいかもしれない。
  • 作業経験別

  • ネットワーク

    • 一般
      • ルータ
      • Hub
      • 無線LAN
    • 中小規模
      • ルータ
      • VPN
  • Webサーバ
    • サーバ構築
      • サーバ運用
        • SSLの適応
        • メールサーバの移管
    • サーバの種類に応じて
      • VertialBox VPS
      • AWS
    • サーバーOSに応じて
      • CentOS BSD
      • IIS
    • ミドルウェアに応じて
      • Apache Nginx
  • メールサーバ
    • サーバ構築
      • サーバ運用
        • メールサーバの移管
  • LB
    • サーバ構築
      • サーバ運用
        • LBサーバの移管
  • DBサーバ
    • サーバ構築
      • サーバ運用
        • DBサーバの移管
  • アプリケーションサーバ
    • サーバ構築
      • サーバ運用
        • アプリケーションサーバの移管
  • 仮想サーバー
    • VMイメージ自体からの復旧、変換
      • xen
      • kvm
      • Docker、コンテナ

コーディングや使用技術にかかわる決まりごと、規則等をガイドラインという。

会社毎に指定されるガイドラインから言語単位で指定されるガイドライン迄、幅広く存在するが、多くは同じクオリティの維持や多人数での作業共有のしやすさを目的とされる。

また、エディターコンフィグの用に導入するだけで、ある程度のコーディングの統一ができたり、lintと呼ばれる物で、静的なエラー確認ツールのような物も存在する。

ビギナー向け・ドキュメント

プロジェクト管理、課題管理、テスト、デプロイツールはクラウドやオンプレの物など便利な物が多数ある。有料無料やチームの規模に応じてそれらを使い分ける必要がある。

  • GitHub
  • BitBucket

  • Gitlab

  • Backlog(国産)

またテスト、デプロイといった時は連携のしやすさを含めメジャーな物の方が対応するサービスは多い。

Develop Skill / 開発技術

基礎概念

バージョン管理、タスクランナー、プリプロセッサ、トランスパイラ、フレームワーク,lint(静的解析)・・

  • ソースコードのバージョン管理(git,svn・・)

  • ライブラリパッケージバージョン管理(composer,npm,yarn・・・)

    • 言語バージョンの管理
  • プリプロセッサ(プリコンパイラ)、トランスパイラ

  • フレームワーク
  • lint(静的解析)
  • FTP,SSH,ビルド,デプロイ
  • テストツール

  • ローカル環境の構築

    • Xampp系
    • VM,コンテナ系

ソースコードのバージョン管理(git,svn・・)

  • Subversion

  • git

    • git remote service ( github , bitbucket ・・・)
  • 関連

Version / バージョン管理(git,svn・・)

ライブラリパッケージバージョン管理(composer,npm,yarn・・・)

  • OS
  • php
    • pear,pear2
    • composer

    su-php等 複数のphpを管理(サーバーサイド)

  • javascript

    • npm
      • monorepo admin by leana
    • Yarn
  • ruby
    • gem
  • python

プリプロセッサ(プリコンパイラ)、トランスパイラ

FTP,SSH,ビルド,デプロイツール

フレームワーク

lint(静的解析)

FTP,SSH,ビルド,デプロイ

テストツール

ローカル開発環境を作る

CMS

a-blog

wordpress

MT

POWER CMS

Cloud9

ローカルにCloud9をインストールしてRuby開発をはじめるまで

ローカルの Docker 環境で Cloud9 IDE を動かす

Ubuntu16.04+nginxでCloud9を動かすまで

パッケージマネージャとは何か?

コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムです。 名前が示すように、パッケージマネージャはパッケージを取り扱います。

現在配布されているソフトウェアやライブラリなどは開発に応じたバージョンがあり、それらのライブラリをベースに開発されたライブラリがある。
しかし、そのライブラリやソフトはさらにバージョンアップを個々に行うため、正常動作をした状態のバージョンの組み合わせを記録管理する必要がある。
そのためにパッケージマネージャは大きな力を発揮する。

node.js

node.jsはnvmを利用してinstallする

開発者ツールとしてのnode.jsはテンプレートやトランスパイラ、SASS利用等欠かせない存在。

  • NVM : nodeのバージョン管理
    ※NVM以外に nodebrewやn等

    • npm : nodeパッケージ、ライブラリのバージョン管理
    • Yarn : 同上

上記のようにnode.js自体の管理とnpmパッケージの管理の2種類が存在する。

Ruby

Gemが有名

Python

pip

PHP

古くはPear
現在はComposer

Git,SVNバージョン管理

バージョン管理とは、ドキュメント、リソースの履歴を残して管理する事です。
昔はSVN(サブバージョン)というソフトが多く使われていましたが、現在はGit(ギット)という仕組みが多く取り入れられています。
これはGitHubを始めとしたクラウドサービスの浸透が大きな役割をはたしています。

Git を学ぼう

SVN を学ぼう

GitHub

GitHubはgit形式のリポジトリをクラウド上で管理できるクラウドサービスです。
課題管理やソーシャル的な役割も果たす為、世界のエンジニアに支持されています。

Bitbucket

GitHub と同じように開発者に支持されているサービスです。

Backlog

日本でサービス提供されているサービス

Communicate / コミュニケーションツール(メール、チャット)

テレワークやフリーランスなど働き方の違いを埋めるツールとして各種コミュニケーションツールがある。
プロジェクト管理ツールなどとも合わせて、直接顔を合わせなくともプロジェクトが進む時代を各種ツールがサポートしている。

  • ネット会議,ウェブ会議
  • メール
  • チャットツール

ネット、ウェブ会議 / テレビ電話

  • 専用回線、機器の利用

  • ソフトウェアの利用

    • apper in , zoom ,Skype

メールツール

  • メールサーバ
    • 会社で構築されたメールサーバ
    • yahoo,google, microsoftなどが提供するクラウドメールサービス
  • メールクライアント
    • outlook,ThunderBirdなどのデスクトップメールクライアント
    • yahoo,google,microsoftなどのクラウドメールクライアント

チャットツール

  • google
    • Hangout
  • Skype

  • LINE

  • Slack

  • ChatWorks

簡易版:開発にかかわるドキュメント類の基本

入門者向けのドキュメントです。
開発において、登場するドキュメント(例えば基本設計書等)の概要や位置付けに対して理解し、時間やお金を見積もりの見通しが出来るようにします。

Index

  • 1 確認、チェックテスト
  • 2 簡易的に理解するための資料
  • 3 納品物について
  • 4 その他 はじめの段階で抑えておいた方がいい資料

1 確認、チェックテスト

Q 下記の違いについて説明が可能かどうか

  • 「 基本設計書 」 と 「 詳細設計書 」の違い

  • 「 外部基本設計書 」 と 「 内部基本設計 」の違い

  • 「 単体テスト 」 、「 結合テスト 」、「 統合テスト 」 の違い

※差し込み
外部設計と内部設計について
https://qiita.com/sjuny/items/a7e9b5ab84b896d3eb53

2 設計部分を、簡易的に理解するための資料

2-1 要件定義書について

略:お客さまの要望をまとめる工程

抑える単語: 要件定義、基本設計、詳細設計、プログラミング設計、プログラミング、単体試験、結合試験、総合試験

2-2 基本設計書について

略:作るシステムの概要とか基本的なことをまとめた資料

抑える単語: IO関連図、画面レイアウト、帳票レイアウト、書式文字、ER図、テーブル定義書 等

2-3 詳細設計書について

略:実際のプログラムを作るときに見る資料

抑える単語: 業務フロー、機能一覧表、ネットワーク構成図、画面遷移図、機能設計書 等

3 納品物について

  • A 基本設計書、DBテーブル定義書
  • B 詳細設計書
  • C テスト仕様書および実施書
  • D マニュアル

これをもっと細かくしたり、これ意外の物というのももちろんあるが、基本は他のベンダーが引き継いだ時にシステムの全容を理解しやすくする物になる。

## 4 その他 はじめの段階で抑えておいた方がいい資料

落とし穴について、工数見積の、時間のブレ幅に対して

抑える単語:不確実性のコーン、0.25~4倍、スケジュールバッファ、フィーチャーバッファ、PERT法

基本設計と詳細設計の境目は?

読んでおくと良いもの

http://blog.livedoor.jp/heppoko_engineer/

webに出回ってるもの

詳細設計書