客先常駐の仕事で1%も出てこないけど知っとくとそれなりに役に立つ話をいくつか

#はじめに
以下のような記事があって、概ね真実であったりします。
**客先常駐の仕事で99%出てくる頻出ソフトウェア・ツール三種の神器**
https://qiita.com/neet_se/items/ea147c83100a21fc1985

99%の場合、もうこれで十分ですし、事実、多くのことに目を瞑ればそれなりに幸せにすごせます。
しかし、世の中にはそういう環境に反逆して、どんな状況でも俺の正義を見せてやるというドン・キホーテがいますので、そういう人向けの記事です。

# Excel
IT技術を自称する会社のなかにはフリーソフトやOSSを制限し、独力で世界と戦うという縛りプレーをしている会社があります。
しかし、そこにおいてもたいてい、Officeは入っています。
そうです、VBAつかって自動化しましょう。

例：

**RPA九人衆による「ｱｶﾈﾁｬﾝｶﾜｲｲﾔｯﾀ」の自動化**
https://qiita.com/mima_ita/items/d4655de865f30bb51c65#vba%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%A3%85

**VBAでInternetExplore上のJavaScriptを無理やり動かすよ！**
https://qiita.com/mima_ita/items/fdff129a8db1153c9940

この辺を応用するとExcelでSeleniumっぽいなにかができる謎ツールだって自作できます。
慣れないうちは時間がかかるかもしれませんが、３、４回、そういうとこでやると、片手間の数日で自作できるようになります。
※なお、基本持ち出しはできないので、どっかに公開しておいてそれを利用するっていうのが楽だとおもいます（３敗）

ChromeとFireFoxの自動化ができない？
どうせ、そういう環境だと、そんなもんインストールしてないから平気です。

# PowerShellかVBS
ExcelVBAだとExcelを開くの面倒という兄貴、姉貴もいると思いますが、そういうときはPowerShellとVBSです。
コマンドプロンプトから実行できるので、タスクスケジューラとか利用して定期処理がはかどります。

例：
**茜ちゃんをPowerShellで弄る**
https://qiita.com/mima_ita/items/953b93cdf423fda897ba

**PowerShellのUIAutomationは複雑怪奇なり**
https://qiita.com/mima_ita/items/3f2aa49fceca7496c587

**レガシー環境のためのWindows Script Host(WSH)の解説**
https://qiita.com/mima_ita/items/127e171db67aaee6ef30

ExcelとPowerShell、VBSの使い分けは、慣れているほうでいいと思います。PowerShellのPS1ファイルはバッチファイル経由なら権限気にしないですみます。

ただし、PowerShellなら、がんばってWindowsAPIを叩けるうえ、.NETのすべてが利用できるので、今から覚えるならPowerShellを覚えるのがいいでしょう。
あと、PowerShellを覚えるのがつらい兄貴、姉貴はPowerShellの文法を最低だけおさえて、PowerShellからC#を使うという方法で学習コストを減らすこともできると思います。

#だいたいどこの現場でも入っているツール
だいたいどこの現場でも入っているツールがいくつかあります。これらのツールはSIer批判の文脈で登場すると流れ弾が飛んできますが、実際、それらを完全に使いこなせている人は少ないです。

##TeraTermのマクロ
だいたいどこでも入っているTeraTermですが、マクロが組めます。
https://mag.osdn.jp/10/01/08/0825239

覚えておくと、たまにやくに立ちます。

##Sakuraエディタ
SIerご用達のエディタですが、コマンドラインからGrepしたり、マクロ機能があったりして以外と自動化に便利です

**サクラエディタの便利そうな機能**
https://qiita.com/mima_ita/items/1ca8b41e29329bb980d0

##WinSCP
サーバーにファイルをアップロードする際にWinSCPを使っている会社はたくさんありますが、実はコマンドラインから操作したり、PowerShellでDLLを参照して自動化できたりします。

**WinSCPを自動化しても別にかまわんのだろ**
https://qiita.com/mima_ita/items/35261ec39c3c587210d8

二人で目視確認しながら慎重にアップロードするとかいう、アレな作業手順が改善できると思います。

##WinMerge
WinMergeも以外と隠しコマンドラインオプションがあったりして、レポートの自動作成とかができます。

**WinMergeのコマンドラインオプション**
https://qiita.com/mima_ita/items/ac21c0588080e73fc458

あと、VBSで色々なプラグインが簡単に書けます。

**WinMergeでSQLiteの比較を行う方法**
https://qiita.com/mima_ita/items/dd4fedcd690b44cea4b5

# HTTPSの閲覧制限を突破する
HTTPS閲覧制限をしている環境でgithubやqiitaを見る方法はいくつかあります。
まず、レンタルサーバーを借りるか、自社のサーバーを借ります。
そのうえで、上記のサーバー経由で目的のサイトをPDF化して取得します。
お手軽にできるPHPでやるならtcpdfでPDF化するといいでしょう。
https://github.com/tecnickcom/tcpdf

こんな感じで使います。

```php
<?php
if(!isset($_GET['target']))
{
  echo "No URL data.";
  exit();
}
$url = $_GET['target'];
require_once("./TCPDF/tcpdf.php");

// ここで警告がでるなら以下をためす
// https://stackoverflow.com/questions/55526568/failed-loading-cafile-stream-in-file-get-contents
$html = file_get_contents($url);

error_reporting(0);
$tcpdf=new TCPDF('Portrait');
$tcpdf->AddPage();
$tcpdf->SetFont("kozminproregular", "", 10);
$tcpdf->WriteHTML($html);
ob_end_clean();
$tcpdf->Output();

```

なお、客先からアクセスできるサーバーがあると色々便利ですが、アップロード系はヤバイのでやめましょう。
あと、インターネット自体制限してたらあきらめましょう。しかたないね。

# PCの管理者権限を得ずにインストールせずにmsiの中身をとりだす。

**Windowsで.MSIファイルを解凍して内部のファイルを取り出す（msiexec編）**
https://www.atmarkit.co.jp/ait/articles/0703/02/news130.html

msiexecを使えば任意のフォルダに展開できますね。

ただし、無断でソフトウェアを使うってのは避けた方がいいです。
レジストリや特殊フォルダとか書き込む系統のやつだと、管理ツールによってはバレます。
[プロセスモニター](https://qiita.com/mima_ita/items/d3763ad42ef3cc66f669#process-monitor)あたりで、レジストリや特殊フォルダを監視して対象のアプリの動きを観察してからやる方法もありますが、そんな手間とリスクをとってやる価値は色々な意味でないです。

あくまで許可されているものが、PCの管理者権限がなくてインストールできない場合に使いましょう。
よくつかうのはtortoise svnからコマンドラインのSVNを抜きだすのに使います。この際は、システムディレクトリに書き込むdllはsvn.exeと同一フォルダに配置しとけば動きます。

ExcelでSVNのコミット履歴を管理して云々とかいう苦行をやっている場合は、VBAからSVNコマンド叩いて動かすようにしましょう。
これも同じようなツールを２，３回つくったので、たぶんよく使うんだと思います。

#Javaな環境ならPHP
みんな大好きJavaで開発している環境では、pleiadesあたりをつかっていると思います。
つまり、xamppがあるのでPHPで動くものなら、Webアプリが作れますね。

wikiつくったり、Jenkinsっぽいなにかを作ったり色々できますので、PHPを覚えておくと色々便利です。
ただし、PCの管理者権限がない環境だと、ファイアウォールの設定で、つみそうなので、そこではあきらめましょう。

#こういう環境で避けたほうがいい技術
交渉でツールやプログラミング言語をインストールできる環境であっても、この手の職場で避けた方がいい技術があります。
Pythonやnode.jsのようにpipやnpmでパッケージを取得するのは、そのたびに申請がいるので辞めといた方が無難です。
パッケージが依存しているパッケージを調べて申請云々とかは非常にめんどくさいです。

あと、この手の環境でPythonやnode.jsを知っている人間は絶滅危惧種より少ないので、保守性にも問題がでてきます。

#おわりに
いかがでしたでしょうか？
特に、これからSIerやSESで働きだす人はご参考にならなかったと思いますが、今、SIerやSESで働いていてソウルジェムが濁ってきた人には、ご参考になったのではないでしょうか？

色々と悩みや課題はあると思います。
だけど、あきらめたらそこで試合終了なので色々やってみると色々突破口があると思います。

・
・
・
・
・
・
・
・
・
・
・
・
~~なお、私はあきらめました。~~