電子決裁等代行業者とオープンAPI

オープンAPIの法整備として2017年5月26日に「銀行法等の一部を改正する法律」が可決されました。

半年ぐらいたったので改正銀行法関連の政省令案がそろそろ公表されるのじゃないかと思っているのですが出ませんね。
てなこともあるので、電子決裁等代行業者等代行業者について頭の中を整理しようと思ったのですが 以下のPageによくまとまってたので以下Pageをみんな読みましょう。

thefinance.jp

ExcelVBAでRPA(Robotic Process Automation)するコツ

とある古のシステムのUIが悪いのでExcelVBAでがんばってみた。
VBAなら特にお金もかからないし、なにせIE縛りのシステムでも手軽にRPAできる。
ほんとエクセルは最高です。

さて、そんないけているIE縛りのレガシーなIE縛りのシステムをVBAでRPAする際に気をつけるポイントをまとめてみた。
どうみてもバッドノウハウ集ですね。

小画面を拾う

古のシステムではやたら新しいウインドウが開きます。
自分で開く場合はオープンするプロセスの中で新しいウインドウを捕捉できるのですが、
大半はjsとかで開かれ、メニューバーとかを潰したりとがんばっているのでそこを読み解くのは心が折れます。
開いた後ウインドウを探してタイトルで捕捉しましょう。
こんな感じでIEのウインドウをすべて探し出して、タイトルとかURLで補足

    Set objShell = CreateObject("Shell.Application")
    For Each objWin In objShell.Windows
        If objWin.Name = "Internet Explorer" Then
            Set objIEsub = objWin
              If objIEsub.document.Title = "ユーザ検索画面" Then
                  Exit For
              End If
       End If
    Next

子画面の表示が終わりきる前に動いてしまうことがあるので、そんなときはApplication.Waitでも入れましょう。

フレーム対処

古のシステムではなんでもない画面でもフレームが多用されてるのも特徴なのでこれも対処、
document.framesで掘っていきます。入れ子になっていてもがんがんいきましょう

Set inputTag = objIE.document.frames("contents").document.getElementById("ok")
inputTag.Click

IDがついてない項目

これはしゃーないので気合いで対処します。
何番目のInputタグだとかで気合をいれて操作してください。
もうコツでもなんでもないですね。


IE専用にデザインされているシステムは使いにくいことも多いのですが
こんな感じでなんとか共存できるのではないかと。

多忙のスパイラル

多忙のスパイラルにはまっており、なんとか対処が必要。

  • 忙しい
  • とりあえず作業してしまう
  • 品質悪く、時間かかる
  • より忙しくなる

という流れ。
やはり作業の前にちゃんとインプットをしないといけない。

とはいえ、自分が未経験の領域だと、何を学んでいけばいいのか、どう学べばいいのかがわからず、インプットに非常に時間がかかってしまう。
そのため、時間のわりにいいインプットにならず、スパイラルから脱却できない。


ここでどう打開するかと考えると、無限の時間がないのであれば、やはり、先人の成果とその過程を学び、思考をトレースしながら不明点を質問して補強していく。これしかないだろう。

過去資料を読みまくろう。
そしてわからないこと聞きまくろう。

Outlookバックアップデータファイルのダイエット。

Outlookのバックアップファイル(archive.pst)が5Gを突破してだいぶ大きく育ってきてしまったので削減にチャレンジ。

  • 不要メールの削除

特に添付ファイルがついているメールをがんがん消す。

  • メールを完全に削除

削除済みアイテムを右クリックして空に

  • ファイルを圧縮

ファイル⇒アカウント設定⇒データファイルタブの中から対象を選んで圧縮ボタンをクリック

  • 待つ

ひたすらまつ。わたしは30分ぐらいかかりました。


これだけで5.7Gあったファイルが4.6Gまで減りました。大分ダイエット成功です。(まだおおいけど。。。。。)

本家の手順はこち
https://support.office.com/ja-jp/article/Outlook-%E3%83%87%E3%83%BC%E3%82%BF-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB-pst-%E3%81%8A%E3%82%88%E3%81%B3-ost-%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%99%E3%82%8B-e4c6a4f1-d39c-47dc-a4fa-abe96dc8c7ef

改行コードCRはなぜ(^M)で\rなのか

Windowsで作ったファイルをLinuxで開くとファイルの末尾とかに^Mがたくさんついて文字化けしちゃったーとかなりますよね。
^Mは改行コード(CR)で、上記状態は改行コードCRLFのファイルを改行コードLFで開いているから起こる事象です。

なおしたければvim

%s/^M//g

と打てばいい。(^Mを入力するには Ctrl+V として制御文字をうつモードに移行して Ctrl+M と打てばOK)

まあそんなことはいいとしてなぜ改行コードCRが^Mなのかを調べてみました。

改行コード

改行コードには2つあります。

通称 英語名 日本語名 アスキーコード 正規表現 表記
CR carriage return 復帰 0x0D \r ^M
LF line feed / newline / end-of-line / EOL 改行 0x0A \n ^K

この2つのコードの組み合わせのどれかで現在PCは動いています。

ASCII文字コードに基づくシステムでは、CR(復帰、0x0D)、LF(改行、0x0A)、またはCR+LFで表している。
LF: UNIXUnix系のシステム。LinuxAIXXenixmacOSBeOSAmigaRISC OSなど。
CR+LF: CP/M、MP/M、MS-DOSOS/2Microsoft Windows
CR: コモドールによるシステム、Apple IIファミリ、Mac OS(バージョン9まで)、OS-9

改行コード - Wikipedia


で、当初のなんでCRが^Mなのかといことですが、実は上記の表をみると答えが書いてあるのです。
CRはアスキーコードで「0x0D」つまり10進数だと13。つまり13番目の制御コードです。*1
で、13番目のアルファベットといえば?? 「M」ですよね
なので^MがCRを意味するのです。

正規表現が「\r」なのはcarriage returnからでしょう。
同じようにLFは11番目で^Kでnew lineから「\n」になっているようです。

たぶんこういうことだと思いますが違う説もあるよとか間違っているよとかあればコメントお願いします

小ネタ

全世界の99.999%以上の人が使うことない機能ですが、
エクセルのユーザー書式内では、「Ctrl+J」を打つことで書式内に改行を埋め込むことができます。
しかしユーザ書式の入力画面は1行しか表示できず改行してしまうと何を打っているのかわからなくなる諸刃の剣、素人にはオススメできない

以下ページの最後のネタで使っています。
garapon.hatenablog.com

*1:0x00もあるので正確には14番目

エクセルの大きな数字を億千万表示にして読みやすくする。

エクセルに大きな数字を表示すると直感的にわかりにくいです。
「1200000000」とかだと何かわからないし「1,200,000,000」となっていても
100万を超える数字だと「あれ、12億?それとも1200億?」とかカンマの数数えるのだけで疲れるから億千万で表示しましょう。

色々やりかたはあるのですが、表示形式のユーザー定義だけでやるのが汎用的でおすすめです。

書式で見やすくする

さて、どんな書式かというとこんなのです。

[>=100000000]#"億"####"万"0000;[>=10000]####"万"0000;####

百聞は一見にしかずでみてみると

f:id:GARAPON:20170511202717p:plain

こんなかんじでいい感じですね。

書式がなにをしているのかというと

もし [>=100000000]   の場合は
書式 #"億"####"万"0000 を適用
;
もし [>=10000]     の場合は
書式 ####"万"0000    を適用
;
それ以外は
書式 ####        を適用

という感じです。書式には条件分岐は3つまでしかかけないのでこんな感じにしています。
それ以上にわたって分岐したいのであれば条件付書式を使うとよいのですが、条件付書式だと設定がめんどくさかったりするので、セルの書式設定の表示形式のユーザー定義だけでやるのがお勧めです。

さらにがんばって後ろの0000を消してみる

さて、かっこよくなったのですが、1.2億のところとか「1億2000万」とかの表示にしたいというニーズもありますよね。後ろの0000とか消してしまいたい!といった。
本来なら関数とかで計算してやるのがいいのですが、とりあえずこれも書式設定だけでがんばってみましょう。

上記のユーザ定義を打ち込んだあとに、「"万"」の後ろで「Ctrl+J」と打ちます。
表示が1桁しかないので非常にわかりにくいのですが、イメージ的には以下のようになります。

[>=100000000]#"億"####"万"
0000;[>=10000]####"万"
0000;####

f:id:GARAPON:20170511202735p:plain

これで見てみると、なんということでしょう

f:id:GARAPON:20170511202741p:plain

かわってますね。
まあなんてことはなくてセルの中で改行されていて以下のようになっているだけなのですが
ぱっと見はごまかすことができます。

f:id:GARAPON:20170511202747p:plain

普段使いしないほうがいいバットノウハウですね><

まとめ

やっぱりエクセルはいろんなことができて楽しい!!!

金融系APIの公開事例

オープンAPI盛んですね。
金融制度ワーキングがFintechと金融機関の発展のためには各金融機関にAPI公開するのだーというのを提示して「銀行法等の一部を改正する法律案」が審議されてそろそろ成立します。

さて、となるとどんなAPIが使えるようになるのかまず海外の事例を探してみると、API仕様をを公開している銀行は3つあります。

Fidor Bank (独)

2009年に設立されドイツでもっとも革新的な銀行といわれるFidor銀行。
支店を持たず、すべてのサービスを60秒以内で終えることを目指すとかいろいろ先進的で面白い銀行。
APIは同社のFidor OSといった概念の基礎を支えていて実用的なものが多い。
以下のリンクで公開されている。
Fidor API Reference

CitiBank (米)

おなじみCiti。こいつはまだサンドボックスという扱い。開発者登録をするとドキュメントが読める。
一通りのAPIが用意されている。
首页 | sandbox.developerhub.citi.com

BBVA (西)

スペインのBBVA。日本語で書くとビルバオ・ビスカヤ・アルヘンタリア銀行とかで覚えられない。
2010年ぐらいから先進技術へ先行して投資を始めていろんな会社を買収したりしている。
これも登録すればAPI仕様が見れる。
BBVA API Market

日本の事例

日本では、メガバンハッカソンのためにAPIを一時的に作成して限定公開していましたがサービスには至っておらず
APIを公開しているのはSBIと静岡銀行(ANSER)ぐらいでしょうか。しかし両者ともAPIは公開していますが、仕様については契約を締結した事業者のみに開示されており中身がどうなっているのかはわかりません。
API接続サービスの開始および株式会社マネーフォワードとの公式連携開始について|住信SBIネット銀行
Fintechと金融機関をつなぐAPI連携サービスを静岡銀行に提供開始 | NTTデータ

まとめ

とまあ後は各社の中身を読んでみればわかることなのですがまだ世界でも先進的な分野なのであまり統一感がありません。
まだ摸索中といった感じですね。今後日本ではどうなるのでしょうか。日本人は右にならえが大好きなのでこういったときは基本海外の事例がお手本にされるのですが、海外でもこれだーというお手本はありません。
仕様策定をがんばっている団体はいますが、BIANとかAPIPlayBookとかもまだ概念程度で詳細な検討は出来ておらずAPI仕様までは落ちてきていません。何で海外でもあまり進まないかって言う話はまた今度するとして、そんななかで日本ではほぼ義務となるオープンAPI。今後が楽しみですね。