情シスは何度でも甦るさ。

VBA!VBA!

CSVを固定長レイアウトに変更したい

基幹のシステムから、社内の業務システムに連携してるデータを、取引先のシステムにもデータ連携をすることになった。

現状は、CSVでファイル連携なのですが、向こうさんがメインフレームなので、固定長レイアウトに変換してくれと。

現場ではよくある話です。

一昔前は、弊社もメインフレーム使ってたので、F社のF*TRAN とかTF-MDPORT とか使ってたのですが、今更有料ソフト買いたくないし、自前でも作りたくないので、フリーのツールを探してみた。

要件
  • 最近のWindows環境でも動く
  • インストール不要
  • コマンドライン実行可能
  • 前ゼロとか、スペース埋めができればよく、文字コードの変換とかは不要。あと、囲い文字の対応とかも特にいらない

で、Vectorで検索してみてヒットしたツールを試してみる。

ソフト名 最近のWindowsで動く インストール不要 コマンドライン実行 変換できる
Csv2Fix
可変長テキスト←→固定長テキスト変換コマンド
Mr.convert
ConvertVF

数値項目を前ゼロで埋めるのが、Csv2Fixだけでした。 というわけで、これを使ってみようと思う。

会社のiPhoneの通信量が激増して○○○万円追加請求された話

「え、なんでこんな請求高なってんの!?」

部長のその叫びから始まったこの事件。

うちの会社では、店頭用にiPhoneを数百台規模で使っている。

契約上、通信量の上限が決まっており、その上限を超えると追加料金がかかる。

で、先月の通信量が、上限の倍ほど使い込んでて、○○○万くらいの追加料金がかかってしまった。

このままじゃ、毎月毎月莫大な経費かかるから、至急対策せよ!

ということで、白羽の矢が立つ。

とりあえず、MDMの設定で以下の対策を打つ。

  • 店頭のiPhoneから、動画サービスへの通信を停止。
  • 個別に見て通信量が激しい店舗の検索系サービスへの通信を停止。

いわゆる、店頭のスタッフが遊んでんじゃねーかという対策。

ただ、どう考えても全ての店舗がそんなに遊びに使っているとは考えにくい。

そこで、ヘルプデスク担当者が問い合わせ時に使用するiPhoneの通信量を調べてみることに。

Akamai!!貴様なぜそんなことを

「会社休みの日に80MBの通信量て!?」

ある端末の日曜日の通信量が、多いのである。もちろん担当者は出社してない。

つまり、iPhoneがスリープしている間に、80MBとかの通信をしていることが判明したのである。

さらに、その通信をうちのネットワークのログでもって調査(弊社の店頭用iPhoneは閉域網を経由して社内N/Wからインターネットに接続される)すると、いくつかの特定のIPアドレス先に通信量が多いことが判明した。

そこで、そのIPアドレスに全体でどれだけの通信を行っているかを調べると、あるIPアドレスhttpsの通信を 月間455GBもしてることがわかった。

IP: 23.35.196.166

どこのサーバーやねんと調べると、

IP address : 23.35.196.166
Hostnamea : 23-35-196-166.deploy.static.akamaitechnologies.com
Country : United States (US) (99% confidence)
Continent : North America (NA)
Time zone : America/Chicago

AKAMAIさん!」

アメリカのAkamaiのサーバに、iOSが何らかの通信を行っている。ただ、その内容は全く謎。

念の為に、でかいアプリでも配信してしまったかと思って調べたが、iOSへのアプリの配信は、http(80)の通信みたいで、それも該当しない。

一体、これは何の通信なんや。

この時点で、この問題が簡単ではないことを覚悟し、まずはキャリアへ連絡。

「うーん、該当のiPhoneを送ってください。検証してみます」

とのことで、iPhoneと業務用アプリで使用するバーコードリーダーアクセサリーをセットで送る。

数日後、回答があり、

「このiPhoneの外部アクセサリーを付けた場合のみ、発生するので、うち関係ありません」

まじかよ!!

いやいや、iOSのバグかもしんないから、もうちょっと調べてよと言うも、「iOSはうちの保守範囲ではないんで」ということで、キャリアには、逃げられる。

社内で検証する

自社で通信テストを本格的に実施。

  • 外部アクセサリー付ける/付けない
  • 業務アプリあり/なし
  • キャリア専用の閉域サービスあり/なし

ということで、10台ほどのiPhoneを並べて、通信テスト。

で、結果としては、

「キャリアの言うこと、あってる!」

なぜか、外部アクセサリーを付けた端末がスリープに入った時に大量の通信を発生させている。

というわけで、外部アクセサリーの製造メーカーへ問い合わせ。

「え、でも、うち、普通にAppleの認証取ってますし、Appleフレームワーク(External Accessory Framework)に則ってiOSと接続してるだけですよ・・・」

でしょうね!

一応、認証取ってるか確認したけど、ちゃんと取ってた。当たり前か。

該当のアクセサリは、物流系や小売系の大企業にも何千台と導入されているので、アクセサリ側が悪いわけじゃなさそう。

というわけで、自社での検証のログを解析を続けると、ある法則が。

iOS11.4のバグ!?

iOSバージョンが11.4の時だけ発生しません、これ?

いろんな組み合わせでやってみたが、iOS11.4でしか発生しない。謎の通信が発生していた端末のiOS上げると収まる。

絶対iOSのバグだろこれ。と思いきやApple様には逆らえないので、別件の対応もあり、iPhoneを回収して、iOSのバージョンアップを実施。

徐々に通信量は下がっていき、無事上限を下回り、原因は謎のまま事件は収束したのであった。

追記:

今回の件で、気になったのは、2019年3月のある日を起点にして、全体の通信量が爆発的に増加しており、そのタイミングまでは、iOS11.4でも通信量は落ち着いていたこと。

なので、iOSではなく、そのタイミングで、Appleのサーバ側で、何らかの変更があったのではないかと考えるのだが、原因は謎。

もしかして、バージョンアップしない輩へのApple様からの天罰なのか。いや、言うても1つ前のバージョンでっせ。

原因がわからないから、また再発しないか心配でござる。

ニフクラ(旧ニフティクラウド)を使ってみた

ある案件で、ニフクラ(旧ニフティクラウド)を導入した話。

ニフクラとは

なお、親会社富士通本体のクラウドサービスは、結構散々で、自社サービスK5は、サービス撤退(リブランディングのようだが中身は別物)。当てにしていたOracleには裏切られるという感じ。

なぜ導入したの?

クラウドに移行するぜという選択肢に、まず入ってこなさそうなニフクラですが、以下のたった一つの理由で導入が決定

既存のデータセンターから、 ちょろっとした申請だけで、 L2レベルでの拡張(延伸)が できる

今は外部のデータセンター(富士通系列)使ってるんですが、クラウド移行前に、小粒のサービスを2つほどリプレースする必要があり、今更サーバーとか買いたくねえ。という悩みを持っていたけど、これで導入が即決。

いや、これは実際便利だった。ネットワークとかほとんど触らなかったし。

メガクラウドとの違い

比較するのは可哀想だが、一言でいうと、「各サービスの制約が強いのに価格が割高」。

そりゃ、規模が違うから価格で敵わんわなぁ。という感じ。
じゃ、なんで選ばれるんだろ?
うーん。メガクラウドほどの機能はいらんけど、今どきレンタルサーバーもなぁ。という層にリーチしているのだろうか。

使うところでとにかく一番致命的だなと思ったのは、
「バックアップ系のサービスを使う際に増設ディスクが100GBまでしかサポートしてない」 という点。

補足すると、Windowsだとシステム領域として、Cドライブに80GBが漏れなくついてくる(Linux系 OS:30GB)んだが、これは拡張不可。 で、DBなんか立てようとすると、Eドライブとか新たに切ると思うのですが、これがここでいう増設ディスク。

「カスタマイズイメージ/イメージ配布」 というサーバーのイメージ(要はAMI)を保存するサービスがあるが、これも増設ディスク100GBまで
「サーバーコピー」というサーバーをコピーして、新たなサーバーを複製する機能があるが、これも増設ディスク100GBまで
「バックアップ」という定期バックアップの仕組みがあり、これはさすがに100GB以上使える。ということで、調べてみたら「1.1TB」まで。

ストレージ周りが弱いってのは、営業の人も言ってました。

EBS、S3という盤石のストレージサービスと比較されるのも、辛いだろうけども、和製クラウドとして、頑張っていただきたいです。