客先常駐SES向け限られた環境の中でエンジニアとして成長しようともがく方法（＋ブックマークレット作成）

# 【前置き】
退職届を無事叩きつける事が出来た私です。
さて、退職届を叩きつけてもまだ暫くは客先常駐で下らない作業を続けなければならないのですが、客先常駐SESの場合上から作業が降ってくるまで待ちの時間があったり、そもそもほぼ作業がなかったりする場合もあります。まさに派遣先ガチャ。そんな中心が折れそうになったり、やることがなさすぎて脳が死滅しない対策を色々行って来たのでナレッジとして残します。

# 【本題】
というわけで、脳死滅対策を打ちましょう。
派遣先次第という事になってしまいますが、今回の対象としては以下を想定しています。

・客先常駐
・外部インターネットが使えない。
・Windows（旧版）
・作業自体は楽だったり待ちの時間が多い環境
・開発環境が無い

条件だけ見るとエンジニア蹂躙環境ですね。バイトでええやんってなります。
本気で客先常駐になると上記のような成長出来ない環境に数年ぶち込まれたりします。
エンジニアになりたかったけどSES企業に入ったとか、上記ファッキング環境にぶち込まれたりした方は速攻で辞めた方がいいです。3年は続けた方がいいとか離職率計上したくない企業の戯言で辞めてバイト（IT企業とか）しながらPCに向き合った方が遥かにマシ。今後SES規制にはメスが入るでしょうしどうにかしましょう。

話が逸れましたが、この限られた中で何をやっていくかと言う事なんですが業務を覚えるって言うのは除外して以下の様な事が出来たりします。

・VBA
・ACCESS
・hta
・HTML
・CSS
・JAVASCRIPT
・CMD

HTML・CSS・JAVASCRIPTはあまりの見られないとは思いますが、windows環境だとofficeが入ってないことはありません。そして更にツールっぽいものは必ず転がってたりします。で、いきなり中身を見てもわからないと思うのでプログラム言語共通のものとして最低限のものだけは覚えましょう。

・変数
・条件文
・繰り返し
・関数

細かく行くとあれなので適当な入門書をさらっと読んでよく見る奴（適当）クラスの概念とかオブジェクト指向とか余計な事を考えずに上記だけはPGとしての登竜門として覚えましょう。どの言語でも１００％使います。

上記理解が出来ればツールの解析が出来ると思います。実際実行出来るものですから動き自体はなんとなく把握出来ると思います。書き手によってテクニカル部分に差が出たりするので面白いです。書き手がいっぱいいる所ならそれぞれのツールを見るといいです。いい感じな書き方があれば盗みましょう。外部インターネットが使えない場合伸び代はそこでしかありません。

次に実際に書いてみましょう。
じゃあ何を書けばいいんだ！！ってなると思います。そんな時はいつもやらされてる業務の中で面倒臭い作業を思い浮かべ簡単な作業の繰り返しで出来てる場所があればそんなポイントを見つけVBAでやらして見ましょう。判断が必要ないものは大体はVBAでサクッと書けます。※但し最初はローカルで動作確認し安全を確認して行なってください。通常シャドーコピーとか貼ってたりしますがそうで無い場合やばい事になりますので。上記の様な改善ポイントが見つからない場合よく使うものをざっくり書き出しますので使ってみてください。

・テキスト操作（FSO,stream)
・ブック操作
・ディレクトリ操作
・再帰処理（WIN２００７↑）

テキスト操作はクッソ使います。使えないと辛いです。
JSONなんて高尚なものじゃなくCSVがメインになります。
ブック操作はテンプレートブックを複製して新しいものを作成したり更新したりします。
ディレクトリは上記に付随して使うことがあります。
再帰処理はぶっちゃけ上記やって行く中で遥かに高度だと思いますが、無差別なファイル・フォルダ操作で高確率で使います。何が高度かと言えば動きが凄くトリッキーな為コード描き始めだと脳をやられます。

続きまして、上記になれたら恐らく現場で管理台帳（）みたいなのを使用していると思います。REDMINEとかそんな高尚なものはありません。ACCESSを使ってテーブルを作ってみましょう。そしてVBAと連動させCRUDを作成してみましょう。ざっくりと項目名を書き出しその上に条件を書くみたいな簡単なのでいいと思います。それフィルターでいいんじゃねとかはなしで。ちなみに客先常駐小ネタですが、なぜこの様な事をするかというと、共有設定にしたエクセルブックは掴み合いがおきぶっ壊れ率が高い為、データをACCESSにぶちこみUIをEXCELにする事で、ACCESSがわからない人でも馴染みの深いエクセルでテーブル操作が出来る様になるだけで価値があるという事です。そんなこんなでRDBとSQL（CURD)のなんたるかを触りくらい身につけれるという事です。Oracleがある現場だとJAVAがあるでしょうし上記の様な事をしなくてもJAVAJAVAすればいいと思います。VBAよりは難易度ググッと上がりますが。

・CMDを使ってみる。
よく使う魔法のコマンドです。ご査収下さい。

・dir /s /b /a-d パス　> list.txt

指定したパス配下のファイルのフルパスを取得します。
VBAでも同じことが出来ますが、上記コマンド一発で抜いてこれるので凄じく手軽で取得したテキストをVBAで処理する事で色々融通利かせたりも出来ます。
他にforを使用する事で最終更新日やサイズとかも抜いてこれるので調べて見て下さい。

・systeminfo

PCの各種情報を引っ張ってこれます、CSV形式でも吐き出せます。
使用する頻度は多くはありませんが、PC端末管理する時にバッチファイルを作ったり人にやらせてテキストだけ渡してもらって後でまとめたりと使うことがあるかもしれないので。

さて、ここまで来て今度はWEB系っぽい分野に。
html+css+javascriptを使ってブックマークレットを作成しましょう。
https://github.com/lunalice/html_css_javascript/tree/master/links

画面サンプル
![uploading-0]()

外部インターネット使えない場合jqueryなんて使えないしHTMLからAPサーバーにリクエストも飛ばせないしDBサーバーもないしでやれる事が本当に限られていますが、DBが使えないならテキストを使えばいいじゃない。って事で作成したブックマークレットです。外部インターネットが使えなくてもHTMLは動くしcssも書けるし、JavaScriptも動きます。テキスト操作でactivexを使用している為windows向きになってしまいますが、その部分を後々サーバーを使う様に改修したりすればきちんとしたWEBアプリっぽくなるでしょう。ちなみに外部インターネットが使用出来ないだけで内部で見れるwebサイトはあると思いますのでデベロッパーツール開いてリンク先からJSとかJQueryを取得したりとかする裏技（）もあります。あまり推奨出来ませんが。。。

そんなこんなを客先常駐で3年くらいやってるとコードは読める様になったり、ロジカルな事に頭が回る様になりお陰様でpaizaSランクは取れる様になっていましたとさ。自分のSES歴は全く無駄にはなっていなかったと思いたいので書きました。ぶっちゃけ凄まじく非効率で無駄が多いですので、この記事を見た客先常駐の方は常に求人サイトと睨めっこして逸早く離脱する事をオススメします。私は3年ちょいでこんな成長しか出来ませんでしたが、ガッチガチのITベンチャーや開発現場に3年入れば自分で効率のいいWEBサービスと組める様になっていると思います。環境が人を育てる、そう思っています。

他にもこんな事出来るよ！とかこんな事してます！とかオススメがありましたらご意見お待ちしております。どんなにしょっぱいアウトプットでもリターンがあれば新しい見解や伸び代に繋がりますし、コミュニティは大事にしたいと思っていますので。なにぶん客先常駐だとエンジニアリング出来る人がいないとかザラなのでエンジニアトーク出来るだけでも活力になるんですね（白目

今回はここまで。ご静聴ありがとうございました。