MEMO

# 背景
システムエンジニアとし派遣されいろいろな会社に行くことが多いですが、久しぶりにwindows環境の派遣先にいって環境構築からつまづいてとても大変な思いをしました。　なので、備忘録的に初期設定まわりについてまとめておこうと思います。

# 課題
会社員の至上命題である給料の上昇を理想として、理想と現実のギャップが課題であるという流れでまとめていきます。

## 理想（エンジニアが給料を上げるために目指す先）
- 1人あたりの作業効率/領域 の 向上/拡大
    - 効率（対象者：全員）
        - ロスがない
            - 自動化の促進
                - 業務の流れ
                    1. 初期設定　<---------------今回のターゲット！！！
                    2. PJのキャッチアップ
                    3. PJ進行
                    5. PJ完了・引き継ぎ
                    6. 次のPJへ　<---------------今回のターゲット！！！
    - 領域（対象者：個人の目標次第）
        - 上位職のクラスチェンジ
        - 環境構築〜サービスローンチまでのフルスクラッチ
        - 専門分野の深化（新技術のキャッチアップ）
        - 異分野への転職

今回は"効率"の向上を対象としたものです。　"領域"の拡大は転職などの話になるのでスコープ外へ。
さらに、その中の業務の流れにある"初期設定"と"次のPJヘ"に対して"ロスがない"というのが今回設定した理想です。

## 現実（"ロスがない"を実現できてない部分）
理想がある一方で現実問題、たくさん面倒なことがありました

- "初期設定"と"次のPJへ"にて発生する不便さ
    - キーボードが変わり慣れるまでストレスフル
        - 従来の対策：　がんばる
            - ロス：ぼたんの打ち間違えによる時間ロス
            - ロス：ストレスによる集中力減少
    - VPNの接続先のキーボードボタンの配置がおかしい
        - 従来の対策：　がんばる
            - ロス：ぼたんの打ち間違えによる時間ロス
            - ロス：ストレスによる集中力減少
    - そもそも初期設定なんて数ヶ月に１度しかやらないため覚えていない
        - 従来の対策：　がんばる
            - ロス：web検索時間
            - ロス：新しく設定時のtutorialの作成というタスクが発生
    - OSが異なり既存のinstall方法が適用不可のため新規作成
        - 従来の対策：　がんばる
            - ロス：派遣先ごと、OSごとにtutorialの作成というタスクが発生
    - インターネットに接続できず既存のinstall方法が適用不可
        - 従来の対策：　がんばる
            - ロス：クローズド環境専用に、install方法の作成というタスクが発生
    - 管理者権限がないためいちいち上司に確認をとる必要がある
        - 従来の対策：　がんばる
            - ロス：申請している時間
            - ロス：申請まで行動できない
    - フリーソフトは申請しないと利用できない
        - 従来の対策：　がんばる
            - ロス：申請している時間
            - ロス：申請まで行動できない
            - ロス：業務に必須でないものは申請却下され、ツール使えず。　紙でがんばる
    - モニターが届かず、いつもの作業スタイルを作れない
        - 従来の対策：　がんばる
            - ロス：windowが乱立し探す時間ロス
            - ロス：ストレスによる集中力減少
            - ロス：画面切り替えによる必要記憶力の上昇（その結果、集中力が減少）
    - PJが変わるたびに初期設定が必要になって大変
        - 従来の対策：　がんばる
            - ロス：上記の事項がたくさん


というようにいろいろな問題が発生し、ロスも同時に発生しています。
適当にカテゴリを作ってまとめてみます。(まったくMECEに表現できなかった)

- カテゴリ
    - 行動様式
        - キーボードが変わり**慣れる**までストレスフル
        - VPNの接続先のキーボードボタンの配置が**おかしい**
        - そもそも初期設定なんて数ヶ月に１度しかやらないため**覚えていない**
        - 管理者権限がないためいちいち上司に**確認をとる**必要がある
        - フリーソフトは**申請**しないと利用できない
        - モニターが届かず、いつもの**作業スタイル**を作れない
        - PJが変わるたびに**初期設定**が必要になって大変
    - 組織のルール
        - フリーソフトは**申請**しないと利用できない
    - 電子情報（ソースコード、webサイト）
        - **VPNの接続先のキーボードボタンの配置**がおかしい
        - **OSが異なり既存のinstall方法が適用不可のため新規作成**
        - **インターネットに接続できず既存のinstall方法が適用不可**
        - **管理者権限がない**ためいちいち上司に確認をとる必要がある
        - **フリーソフト**は申請しないと利用できない
        - **PJが変わる**たびに初期設定が必要になって大変
    - 物理媒体（モニター、キーボード、マウス）
        - **キーボードが変わり**慣れるまでストレスフル
        - **モニター**が届かず、いつもの作業スタイルを作れない
        - **PJが変わる**たびに初期設定が必要になって大変


## ギャップ（理想と現実のギャップ）
- 課題： 以下の変化する要素の　減少/柔軟な対応　ができていない
    - 行動様式（指が覚えているタッチタイピングの仕方、ディスプレイ内に配置するソフトウェアの位置）
    - 電子情報（ソースコード、webサイト）
    - 物理媒体（モニター、キーボード、マウス）
    - 組織のルール（申請方法）

となるわけで、現状はすべての変化のしわよせがおしよせてきて本来やらなくてよいタスクになっている（ロスになっている）わけです。
---------------------ここより下の章は未編集のため、流れがおかしいです。------------------------
# 方法

課題が明確になったので、解決方法を考えていきます。
##  "環境が変わる" とは何か？　以下に思いつきであげてみた。
- 利用しているキーボードが変わる   ←　１プレイヤーでもコントロール可能 
- パソコンのOSが変わる 
- 上司が変わる　　　　　　　　　　←　1プレイヤーではコントロール不可能
- アクセス権限が変わる
- 会社の立地が変わる
- 給料が変わる

上司が誰になるかなんて博打ですからね、社内弱者である派遣の１プレイヤーにそんな権限はありません。
コントロール可能なものをまず抽出していきます。

そのときに情報伝達の流れを可視化すると　（文字だけど）
人（運動）　ーー＞　物理媒体　ーー＞　電子情報
となります。 できるだけ物理媒体と、電子情報で変化を吸収できると、人のタスクがへっていくので理想的といえそうです。


- ”6. 次のPJへ”　→　節 "共通して使えるものを抜き出す" 
- ”1. 初期設定”　→　章 "方法"

順番逆になってますが、それぞれの章または節でまとめていきます。



## 本記事のスコープ

　
備考： 組織、PJチームの作業効率の最大化 は上位職のクラスチェンジに該当していて、今回の記事からはスコープ外とする. 組織、リーダーとメンバーのトレードオフ問題が多いので。



## 共通して使えるものを抜き出す
- インターフェース
    - GUI(グラフィカルユーザーインターフェース)　　　←----------今回のターゲット！！！
        - input: 手からの動作
            - with:  キーボード　or　マウス
        - output: 視覚へのグラフィカルな出力
            - with: ディスプレイ
     
    - CUI(キャラクタユーザーインターフェース）
        - input: 手からの動作
            - with: キーボード
        - output: 視覚へ文字列の照射
            - with: ディスプレイ
            
    - マンマシンインタフェース(withの部分)
        - ディスプレイ　　　　　　　　　　　　　　←----------今回のターゲット！！！
        - キーボード　　　　　　　　　　　　　　　←----------今回のターゲット！！！
        - マウス　　　　　　　　　　　　　　　　　←----------今回のターゲット！！！
        - 音声認識（siri etc...）
        - モーションキャプチャ（VRなどのゲーム）

- プロジェクト推進にあたり必要な業務
    - 主業務(Java, Python, C++, HTML, JavaScript)　　　←----------今回のターゲット！！！
        - タスク消化
        - 技術的負債の消化
        - 改善
    - 情報共有
        - 口頭ベースの会議
        - コミュニケーション管理(mail, チャットツール)
        - 会議管理(会社ごとのfullスクラッチ, cybozu)
    - 管理業務(マネジメント)
        - タスク管理・納期管理(backlog, redmine, asena, wrike)
        - リスク管理
        - 品質管理
    - backoffice
        - 経費
        - 確定申告


プロジェクトの生産性向上をめざすためにはたくさんやらないといけないことがあるけれど、
派遣先がころころ変わってしまうことが多いので、個人の力で共通化しやすいものをピックアップした。
- ディスプレイ
- キーボード
- マウス・トラックパッド
- 主業務(Java, Python, C++, HTML, JavaScript)


------------以下はまだ執筆中------------------
- OS windows, mac
- モニター: デュアルモニター、シングルモニター、notepcのモニター
- マウス：　マウス、トラックパッド
    - クリック操作
    - タップ
    - ダブルタップ

- キーボード：　jis配列　US配列 vs  for mac for windows
- フリーソフトウェア： python, R , Java
- フリーソフトウェアの配布元：anaconda, Python公式
- proxy設定
- editor: sublime, 桜エディタ, vim, jupyter
- DFD可視化tool: mermaid.js
- todo list: 紙、手帳、文具
- タスク・納期 管理：　redmine, backlog, wrike, asena
- 会議スケジュール管理： cybozu, outlook, web
- チャットツール：slack, line, skype, 



# 方法（アプローチ）
## 共通
### 主業務
#### データ整備環境（オプション）

Homebrewの install （https://brew.sh/index_ja）
```shell-session
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```
gccのinstall
```shell-session
brew update
brew install gcc
```

#### データ整備環境:python本体のinstall（with miniconda）

既存condaのuninstall

```shell-session
conda install anaconda-clean
yes | anaconda-clean

conda info -e # 確認後　conda projectfileの削除
rm -rf xxx # ↑で確認したfolderごと削除
```

conda fileのdownload

```shell
cd ~/Downloads
mkdir 2020xxxx_miniconda_down
cd 2020xxxx_miniconda_down
# あらかじめ最新版を次のlinkから選択　https://repo.continuum.io/miniconda/
#wgetのパターン
#wget https://repo.continuum.io/miniconda/Miniconda3-py37_4.8.2-MacOSX-x86_64.sh
#curlのパターン
curl https://repo.continuum.io/miniconda/Miniconda3-py37_4.8.2-MacOSX-x86_64.sh
```

installの実行

```shell
bash ./Miniconda3*.sh -b -p $HOME/miniconda # 参考https://docs.anaconda.com/anaconda/install/silent-mode/
```
pathの追加

```shell
echo 'export PATH=$HOME/miniconda/bin:$PATH' >> ~/.bash_profile
```

#### データ整備環境:jupyter notebook
```python
conda remove -n py37 --all
conda create -n py37 python=3.7 # 一度 CLIを再起動
conda activate py37
pip install jupyter
pip install jupyter-contrib-nbextensions
pip install jupyterthemes
jt -t gruvboxd -T -Njt -t gruvboxd -T -N -fs 13 -ofs 13 -f meslo -cellw 95%

pip install pandas
```


- 物理媒体
    - キーボード
        - [REALFORCE] 東プレ R2TLSA-JP3M-BK REALFORCE TKL SA R2 for Mac
    - PC
        - 不定


## mac（macOS Mojave 10.14.6）
### キーボード
- macキーボードへの切り替え: fn + end (REALFORCEのキーボードの特殊コマンド)
- capslock: commandへ割り当て
<img width="658" alt="スクリーンショット 2020-04-04 12.43.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/9d3d0088-abde-2387-3225-1880473815aa.png">
- カーソル速度変更
<img width="662" alt="スクリーンショット 2020-04-15 19.28.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/faaba840-58ce-52a5-6e1f-02b9fd8fb734.png">
- sleepを外付けkeybordからできるようにする
- <img width="674" alt="スクリーンショット 2020-05-05 14.21.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/b8235ae0-be12-bc48-bba4-2183a049dd14.png">


### マウス・トラックパッド
- click音を小さくする
<img width="645" alt="スクリーンショット 2020-04-04 12.49.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/418485/4708668c-924b-54c7-74d4-3d5ad2415f92.png">

## windows
### キーボード
- winキーボードへの切り替え: fn + end (REALFORCEのキーボードの特殊コマンド)
- capslock: controlへの割り当て
- 英数とかな： 英数、かなへ割り当て
    - comming soon
### マウス・トラックパッド
- comming soon

# 効果・結論