Edited at

客先常駐の仕事で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っぽいなにかができる謎ツールだって自作できます。

慣れないうちは時間がかかるかもしれませんが、3、4回、そういうとこでやると、片手間の数日で自作できるようになります。

※なお、基本持ち出しはできないので、どっかに公開しておいてそれを利用するっていうのが楽だとおもいます(3敗)

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#を使うという方法で学習コストを減らすこともできると思います。


TeraTermのマクロ

だいたいどこでも入っているTeraTermですが、マクロが組めます。

https://mag.osdn.jp/10/01/08/0825239

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


HTTPSの閲覧制限を突破する

HTTPS閲覧制限をしている環境でgithubやqiitaを見る方法はいくつかあります。

まず、レンタルサーバーを借りるか、自社のサーバーを借ります。

そのうえで、上記のサーバー経由で目的のサイトをPDF化して取得します。

お手軽にできるPHPでやるならtcpdfでPDF化するといいでしょう。

https://github.com/tecnickcom/tcpdf

こんな感じで使います。

<?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を使えば任意のフォルダに展開できますね。

ただし、無断でソフトウェアを使うってのは避けた方がいいです。

レジストリや特殊フォルダとか書き込む系統のやつだと、管理ツールによってはバレます。

プロセスモニターあたりで、レジストリや特殊フォルダを監視して対象のアプリの動きを観察してからやる方法もありますが、そんな手間とリスクをとってやる価値は色々な意味でないです。

あくまで許可されているものが、PCの管理者権限がなくてインストールできない場合に使いましょう。

よくつかうのはtortoise svnからコマンドラインのSVNを抜きだすのに使います。この際は、システムディレクトリに書き込むdllはsvn.exeと同一フォルダに配置しとけば動きます。

ExcelでSVNのコミット履歴を管理して云々とかいう苦行をやっている場合は、VBAからSVNコマンド叩いて動かすようにしましょう。

これも同じようなツールを2,3回つくったので、たぶんよく使うんだと思います。


Javaな環境ならPHP

みんな大好きJavaで開発している環境では、pleiadesあたりをつかっていると思います。

つまり、xamppがあるのでPHPで動くものなら、Webアプリが作れますね。

wikiつくったり、Jenkinsっぽいなにかを作ったり色々できますので、PHPを覚えておくと色々便利です。

ただし、PCの管理者権限がない環境だと、ファイアウォールの設定で、つみそうなので、そこではあきらめましょう。


こういう環境で避けたほうがいい技術

交渉でツールやプログラミング言語をインストールできる環境であっても、この手の職場で避けた方がいい技術があります。

Pythonやnode.jsのようにpipやnpmでパッケージを取得するのは、そのたびに申請がいるので辞めといた方が無難です。

パッケージが依存しているパッケージを調べて申請云々とかは非常にめんどくさいです。

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


おわりに

いかがでしたでしょうか?

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

色々と悩みや課題はあると思います。

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

























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