Articles tagged with: Windows

私、Mac方面については素人なのですが、、、


kintone Advent Calendar 2021の17日目の記事です。

  Topへ↓

今年も弊社はkintoneの案件を多く請け負わせてもらいました。ありがたい限りです。
今の状況に甘んじず、引き続き精進を重ねなければ。
というのも、まだまだ精進が足りん!と界隈からどやされそうな案件があったので。

kintoneに没頭するのはいいけれど、窓とリンゴの違いは考えておかないとね。
というわけで、本記事ではMac環境に詳しくなかった私が設計に失敗しかけた話と、その後のリカバリ方法をご紹介したいと思います。
なお、この失敗は私の未熟さが全てなので、責任は全て私にあります。私以外の誰れ〜も悪くないのです。

のようなクラウドシステム。その利点はいろいろ挙げられると思います。中でも真っ先に挙げられるのが、端末の心配をせずに済むことではないでしょうか。
モダンブラウザさえインストールされていれば大抵の機能は動きます。一昔前のシステムでは必須だった、やれライブラリが古いとか、やれ依存関係がどうとか、やれドライバがどうとか。そんなもの気にしなくても導入できる。それがクラウドシステムの魅力です。
リンゴが大好きだろうが、窓から見る世界が全てだろうが、クラウドシステムは無関係に動いてくれます。
端末の差異を気にせずに済むようになったことで、システム開発のコストは下がりました。
スマホやタブレットがあれば外出先でも自由自在にシステムにアクセスできる。そんなクラウドシステムの恩恵を多くの人が受けられるようになりました。

私、すっかりこの前提に甘えてしまっていたようです。
私が大学を卒業した1996年。ちょうど、Windows 95が爆発的に世間に普及した年です。同時に、インターネットが新たなツールとして世の中にデビューした頃でもあります。
実は私、それ以来パソコンに関しては一貫してWindowsしか使っていません。
技術者として独立した2006年から、ずっとMacとは無縁でした。Macの操作を知らなくてもシステム・エンジニアのフリができたのです。なぜなら仕事の上ではWindowsだけで事足りてきたから。キャリアの現場でMacに遭遇したのはせいぜい三台ぐらい。

私のMac音痴はkintoneを扱い始めた2011年秋からも変わらずでした。お客様にMac使いがいらっしゃらないので、Macに疎い私の無知がバレる恐れはありません。
ところがついに今年、私はMacがらみでプチ失敗してしまいました。


2.複雑な帳票を帳票Onlineで設計

  Topへ↑

お客様からSalesForceをkintoneに移管したいとのお話があり、早速とりかかった弊社。
そのお客様は、SalesForceとSVF Cloudをつないで帳票を発行していました。そして、その帳票は複雑でした。明細行には、複数のサブテーブルの情報をつないで出す必要がありました。セルの結合もあちこちに潜んでいます。開発には相当の困難が予想されました。
下図は帳票のうちの一つです。


そこで弊社は、アイ・コンさんの帳票Online for kintoneをお客様に提案しました。帳票Onlineであれば、セル結合や複数のサブテーブルの明細行への表示もできるようです。自在な改ページや印鑑埋め込みなども含めて機能を満たしていると判断しました。

帳票設計にあたっては、帳票Onlineの帳票を設計するための風神レポートの開発キット(プロフェッショナル版)を弊社で購入しました。
弊社メンバーが頑張った結果、帳票についてはおおかたの設計ができました。

3.開発はしたけれど

  Topへ↑

ところが、ここから開発が迷走してしまったのです。
なぜ迷ってしまったのか。以下に理由を書きます。

下図は迷走の途中で作ったフロー図です。上からずっとフローが流れてきて、請求管理のアプリまでやってきています。
この請求管理アプリですが、複数のサブテーブルを持っています。上流のアプリから作業明細や交通費などのデータが流れてくるため、複数のサブテーブルで管理する必要がありました。
このサブテーブルの情報を明細テーブル内に複数表示させるのが今回の帳票です。先にアップした通りですね。


ここでまず、帳票Onlineの仕様が私の前に立ちふさがりました。帳票Onlineは帳票を出力するにあたって、アプリで登録されているデータを加工して出力できない仕様なのです。
ところが、今回の帳票はなかなかに複雑な制御を行っているため、kintoneアプリにはない項目をCSVに含める必要がありました。

つまり、帳票Onlineの標準機能では帳票が出せないのです……。

4.帳票ルックアップの導入とMacの制約

  Topへ↑

そこで私が考えたのは、風神レポートに別売りで用意されている「ルックアップ機能」を利用することです。
「ルックアップ機能」をインストールすると、そのパソコン上で任意のフォルダを監視できます。そのフォルダにCSVが格納されれば、帳票Online用の帳票設計ファイルを通して帳票を出力できます。

つまり、やるべきなのは請求管理アプリから整形したCSVを出力すること。
ただし、請求管理アプリが複雑なので、標準機能で帳票Online用のCSVは出せません。そのため、JavaScriptのライブラリを使い、CSVを出力しました。

ここで問題になったのは、「ルックアップ機能」がインストールできるのはWindows PCに限られていたことです。
ところが、お客様はMacでビジネスを回しておられました。そして、お客様のもとにあるWindows端末は一台のみでした。
かなりリスクがありましたが、私はこの時点で帳票Online+風神レポート+「ルックアップ機能」の構成を提案しました。これがプチ失敗の元。

そもそもMacに関してはもう一つの制約がありました。今回、風神レポートで帳票を設計してくれたメンバーはMac使いでした。ところが、風神レポートの開発キットはWindowsでしか動きません。
幸い、弊社で余っていた端末がサテライトオフィスに置いてありましたが、それによってメンバーは帳票設計の作業のためだけに通勤を余儀なくされました。
この時点で、すでにMacを甘く見ていた私の思惑があちこちで崩れかかっていました。それに気づかずプチ失敗へと突き進む私。

また、お客様がGoogle Driveをお使いだったので、「ルックアップ機能」の監視フォルダをGoogle Driveのフォルダに設定しました。ところがこれがうまく動きません。そのかわりにお客様にOneDriveのアカウントを作ってもらい、OneDriveのフォルダを監視フォルダにしました。すると、OneDriveのフォルダにCSVファイルを格納すると、自動的に帳票が出力できるようになりました。
さらに、生成したPDFファイルを格納するフォルダを任意のOneDriveのフォルダとして設定しました。その設定が功を奏し、Mac端末とWindows端末がOneDriveフォルダを介してつながりました。

この時、お客様からは風神レポートが出力した帳票をファイルとしてお客様に送付したいとのご要望もいただいていました。
そこでCube PDFを導入し、出力した帳票を自動的にPDFファイルとして生成する機能を考えました。Cube PDFでは出力時にどうしても確認ダイアログが出てしまいます。それを回避するため、Cube VPという仮想プリンタの機能を導入しました。Cube PDF LiteとCube VPを組み合わせると、確認のダイアログを省いてPDFが生成できます。この時の仕組みは以下の通りです。

ここまでで、いったんお客様がMacのOneDriveのフォルダにCSVをアップすれば、お客様の望む帳票が出せるようになりました。しかもMac端末のOneDriveを見れば、出力した帳票がPDFファイルとして見られるようにも。

この時点で以下のような仕組みが組みあがりました。

これで、お客様の最低限のご要望は満たせたのです。間にWindowsマシンが挟まっているとはいえ、Mac端末でCSVをインプットし、Mac端末でアウトプットされたPDFを見られるようになりました。

5.出力はできたけれど

  Topへ↑

ところが、この方式で数日テストしてみたところ、お客様にとって、このやり方は意に沿うものではありませんでした。普段Macを使っているのに、その時だけWindows端末を使うのは非効率だと。
たとえWindows PCの操作のために移動する必要がないとしても、Windows PCの電源のON/OFFのためにオフィスに行く必要が生じる。これによって、リモートワークもできない、という強いご要望をいただきました。
この「リモートワークができない」というご指摘は私に重くのしかかりました。クラウドシステムを提供する会社にとって、リモートワークができないというのは、あってはならない事態です。

Mac端末に「ルックアップ機能」がインストールできれば丸く収まったはず。ですが、仕様である以上どうもできません。これはMacリスクを甘く見ていた私の失策です。なんとかしなければ。
ここで私はとても悩みました。お客様の言い分ももっとも。ここを解決しなければシステム・エンジニアの名が廃る。

お客様がもともと使っていたSVF Cloudのライセンスがまだ有効なはずなので、それを使えないか、というご意見もいただきました。
そこで、SVF Cloudの開発元であるウイングアーク1st社にも連絡を入れました。
ここでSVF Cloudを導入していれば、あるいはうまく行ったのかもしれません。ですが、私はその判断を簡単に下せない事情を抱えていました。
まず、SVF Cloud for kintoneが諸般の事情で販売終了していたことです。これによってプラグインを使って開発工数を減らす道は閉ざされました。ということは、SVF CloudのAPIを一から学び、さらに帳票に当て込む作業が発生するのです。その工数や予算はどこから捻出すればよいのでしょう。しかもSVF Cloud for kintoneが販売終了した経緯が不透明で、今後の販売再開の見込みがない以上、kintoneを主に扱う弊社がSVFの知見を蓄えるメリットがあるのか、とも悩みました。ウイングアーク1st社がkintoneへ再び熱意を持ってもらえばよいのですが(再び持っていただきたいです!)。
さらに、SVF Cloudを導入すると、本案件を機会に帳票Onlineの設計スキルを弊社メンバーに学んでもらおうとした目論見が崩れてしまいます。さらに開発キットを購入した投資額も本案件で回収できなくなる見込みが高い。

さて、ここが知恵の絞りどころ。ここで妙案を出さねば。
悩んでいた私に、ひらめきが降りてきました。このひらめきで全てがうまくまとまりました。

6.構成をもう一度検討し直す

  Topへ↑

私の解決法は請求管理アプリではなく、もう一つ別に帳票発行専用のアプリを作ることでした。
問題の発端は、請求管理アプリの構成が複雑で帳票Onlineでは出せなかったことにありました。
ならば。もう一つアプリを作って、そのアプリを帳票Onlineで適切に扱えるようなデータ構成にすればよい。
こう書いてみると簡単ですが、思考が袋小路に迷い込むと単純な発想が出てこないものです。

ここで以下のように変更しました。

ここで新たに作った帳票発行用アプリのレコードの構成は、帳票Onlineの仕様に完全に沿っています。明細行まで含め、レコード単位で帳票Onlineが解釈できるデータに分解しています。
そのレコードは、請求管理アプリのデータを加工し、生成するプログラムを作ってあげればよい。それはJavaScriptで実装できます。
また、帳票発行用アプリは発行専用です。そのため、データを貯める必要がありません。毎回、請求管理アプリでボタンが押される度に、帳票発行用アプリのレコードを全て削除し、その後でレコードを新規に追加する仕様にしました。
その際、JavaScriptの中ではいくつかのPromise処理が必要になりました。ですが、それは普段からプログラミングしている処理なのでさほど悩まずにできました。

その結果、お客様はMac端末のブラウザ上で帳票が出せるようになりました。間に挟んでいたWindowsは不要になったのです。もちろん、移動も不要で、リモートワークも可能です。
その代償として、購入した「ルックアップ機能」は不要になってしまいましたが、風神レポート設計の工数やスキルが無駄になるよりはよっぽどよかったと思います。何よりもお客様の求める運用が実現できましたし。

7.まとめ

Topへ↑

それにしても、kintoneがMacでも動くから、とMacを甘く見ていました。
よくよく考えると、kintoneにはしばしば周辺の仕組みが絡んできます。特にハードウエアを含めた構成の場合は。ドライバ、ライブラリなど、Macが絡むとうまく行かないことはよくありますよね。
Excel VBAマクロもそうです。Windowsでは動いていたマクロがMacでは動かないこともよくあります。そもそもファイルシステムが違うので仕方がないのですが。
今回は私がMac端末のことを真摯に考えていなかったことに原因があります。あわやプチ失敗しかけました。

まあ、結果として無事に動いたのでよかったです。
今ではアイ・コンさんのツールはブラウザ上で問題なく動いてくれています。複雑な帳票が設計・導入できたのも帳票Online+風神レポートのおかげ。
帳票Onlineは今年の弊社が関わった別案件でもドットインパクトプリンタで日々の帳票を出力してくれています。

帳票にはいろいろあります。中には複雑なものも。
今後もまだまだ業界によっては帳票出力が必要になることでしょう。そして、さまざまなパターンでの出力が求められるでしょう。
今回の件を通して、弊社は帳票設計と出力のスキルを豊かに蓄えられました。今後もさまざまなパターンでの対応ができるよう切磋琢磨したいと思います。
もしkintoneと帳票出力でお困りの方がいらっしゃいましたら、ご遠慮なくご連絡をくださいませ。帳票Online for kintoneで自在に設計してお目にかけます。