クラウドに頼らずに iPad を使う with オレオレ証明書との戦い

 

さて、iPad をいかにノート PC の様にして使うか、それが iPad を初めて手に入れたボクの最初の使命である。iOS はバカ素人でも使えるように、様々な PC 的概念が見た目上排除されている。例えば撮った写真は写真アプリでしかアクセス出来ない。他の写真加工ソフトとかで見ることができないのだ。
これはアプリとデータをセットで隔離することによって、セキュリティを高めることが出来るからだ。別のソフトが勝手に他のアプリのデータを読んだり、また他の場所にコピーしたり出来ないようにしているわけだ。

この制限はあくまでも見た目上であり、中身は PC と同じなので、フォルダ(ディレクトリ)があり、ファイルがある。そして上記の制限を完全に守ると使いにくいので、他のアプリが写真にアクセス出来るように許可を出す設定が出来たり、他の場所にコピーをする許可を出す設定ができたりする。

さて、ボクの場合は amatsukami.jp サーバに開発に関わるあらゆるデータが置いてある。これは iPad からするといわゆるクラウドに相当する。要するにボクは 2000 年頃からすでにクラウドみないなことをやっているわけだが、iOS 上のアプリはこの独自クラウドには対応していない。Google DriveiCloudDropbox などの有名なサービスには対応しているが、ボクが個人的に立ち上げたクラウドにはアクセスする手段を用意していないのだ。

じゃぁ Google Drive などのサービスを使えばいいじゃないかというと、そう簡単にはいかない。まず容量が足りない。ボクのサーバはプロジェクト用だけでも 8TB 用意してある。Google Drive で無料に使えるのはその 1/1000 以下の 5GB である。そしてもう一つ重要なのが、エロゲのデータが置いてあることだ。
エロゲの画像データは海外からしたら児童ポルノに認定されてしまうことがよくある。Google などが勝手にボクのデータをのぞき見て、エロゲのデータを児童ポルノだと認定したら垢バンどころかそれ以上の面倒なことになりかねない。

そう言った理由で、自宅サーバにデータを置いているのである。

でね、Googe Drive とかも別に特殊なことをやっているわけではなくて、内部ではインターネットで規定された汎用の技術(WebDAV など)を使って実現されている。と言うことはつまり iOS のアプリ側も汎用的な技術を使って Google Drive とかにアクセスしている。
そこで汎用的な技術を使って iOS とその他のサーバとをやりとりできるアプリを間に挟むことによって、自宅のサーバのデータを iPad で読み書きするように設定できた。FileExplorer というアプリだ。このアプリは、様々なアプリがファイルを開くとき、この FileExplorer が選択できるように設計されているようだ。そのため、アプリからファイルを開くとき、FileExplorer を選べば FileExplorer がアクセス出来るファイルを読み書きできるという具合だ。

ところが iPad 側でいろいろとファイルをいじれるようになったものの、問題が起きた。それはフォント(笑)。ボクの開発用 PC には相当数のフォントが入っているのだが、iPad にはないし、そもそもそんなにたくさんのフォントを入れることは出来ない。
結局印刷物を作ったり、バナーを作ったりするのには全く使えなかった(汗)。

ただ、よくわかんないんだけど、PC で作ったファイルを読み込むと、Adobe や Office はどこからかフォントを読み込んでくれるようだ(アプリ起動時に、本体にないファイルを読み込んでいますみたいなことが表示される)。

さて、ここまではまずまずの結果と言ってもイイだろう。
問題はその次である。それはオレオレ証明書だ。amatsukami.jp の通信を暗号化するための証明書は公的なものではなく、ボクが勝手に発行したものだ(笑)。別にボクだけが使うものだし、暗号化さえされていればいいのでちゃんとした証明書はいらない。それにこのオレオレ証明書を iPad に登録すれば、ボクの iPad だけ公式な証明書となるのだ。
ところが、これが何度登録しても実際に使おうとするとオレオレ証明書になってしまう。コレは困った。iPhone ではすでに同じことをしてあって、そっちではちゃんとエラーも出ずに公式な証明書として使えているのに、なぜか iPad ではダメなのだ……。そのためボクの仕事で使っているサイト(redmine とかグループウェアとか)までエラー表示されてしまう。

困ったなぁ……いったい何が原因なんだろうか? っていうかもう公式な証明書をとるしかないんだろうか??

与太話。ボクは今、趣味でも仕事でも PHP でプログラムを組んでいるんだけど PHP で扱う日付は UNIX 時間という 1970 年 1 月 1 日から何秒経過したかっていうデータなのね。でもそれだと何が何だか解らんので、この秒数を「○年○月○日 XX時XX分XX秒」に変換して使ってる。

ところが、この年月日を計算するとなると(例えば今日は 2017 年 7 月 11 日から何日が経過しているかとか、2018 年 12 月 13 日引く2001 年 10 月 9 日は何年何ヶ月何日間なのかとか)、UNIX 時間のままの方が楽だ。ただの秒数だから、秒数同士を足したり引いたりするだけで OK だからだ。

しかし一度貰ったデータは「○年○月○日 XX:XX:XX」っていう形式のデータに変換してしまっている。

上の strtotime という関数はこの「○年○月○日 XX:XX:XX」っていうデータから UNIX 時間に戻してくれる関数なのだ。コレのおかげで時間計算が凄く楽になって助かったーっていう意味が上のツイートには込められているのであった。