Scribble at 2023-10-27 11:22:58 Last modified: 2023-10-28 23:20:28

添付画像

プライバシーマークの運用、というと不正確なので、「JIS Q 15001 に準拠する個人情報保護マネジメント・システムの運用」と表現せざるを得ないところもあるのだが、要するに多くの実務家が「プライバシーマークの運用」とか言っているマネジメント・システムの運用について、いま社内でプロジェクトを進めている。これは12月に実施されるプライバシーマークの現地審査にも関係があるのだけれど、ひとまず社内の都合だけで動いており、現地審査に間に合わなくても特に問題はない。それは、関連する帳票・記録類、それから社内規程も含めて、役員から社員にいたるすべての関係者が利用する、弊社専用のウェブ・アプリケーションを開発するというものである。

これまで、社内規程は Google Docs や Dropbox に置いた PDF を開き、セキュリティに関連する与信審査では CloudSign のテンプレートを先方に送り、何かインシデントが発生したときの帳票(事実上の始末書だが)には紙の書類を各人から提出してもらってきた。これでは e-文書法とか DX とか言う以前に不合理である。よって、これらを一つにまとめて実装できる人間が社内にいるのだから、ちゃんと一元化して、工数もコストも節約できればいいし、マネジメント・システムとしても効率が上がると思う。

当初は、社内だけで使うシステムであるから、ファイル・ベースのデータ管理にしておこうと思った。AWS に実装する予定なのだが、いまのところ AWS では DB のサービスを使っておらず、これのためだけにコストをかけるのはどうかと思ったからだ。でも、やはりウェブ・サーバと同じファイル・システム上に記録のデータを置くのは、情報セキュリティの実務家としてどうなんだろうと思わざるを得ない。また、マネジメント・システムの担当者としても、僕自身が開発して運用するのであるから、牽制関係や文書管理についての監査という観点では疑問が残る。たぶん、これをこのまま出しても、プライバシーマークの審査員からは「その記録を、あなたが改竄しない・できないという保証がない」として、問題があると指摘される可能性もあろう(もしシステム開発や情報セキュリティ技術に通じている審査員なら、そう指摘するのが当然だろう)。

ということで、最低でも外部のサービスを利用して DBMS を運用することが望ましく、できれば DBMS の構築や運用自体は僕自身の手が届かない仕様が望ましい。すると、クラウドのサービスというのが一つの選択肢として出てくる。そういうわけで、まずは無償で試しに使えるサービスということで、この MongoDB のクラウド・サービスを利用してみることとした。接続するウェブ・サーバの側では、今回も PHP で構築するため、MongoDB のドライバを入れておかなくてはいけない。そこで、Amazon Linux 2023 に入れてある PHP 8.2 だと不足が多いので、(1) php-devel を追加し、(2) php-devel を入れると pecl が使えるようになるので、#pecl install mongodb にてドライバを追加し、(3) /etc/php.ini に extension=mongodb.so の行を追加して、(4) systemctl reload php-fpm で PHP のプロセスを再起動することで、MongoDB に接続する準備が整う。

なお、MongoDB について簡単に調べてみたのだが、やはりいつものように Qiita などに「入れてみた」式の初歩的なことばかりが無数に書かれていて、MongoDB で何をしたのか、何ができるのか、あるいは何がしたいのかという具体的な話をする人が殆どいない。どのみち、日本で MongoDB の記事を書いているのは、使ってもいない「インストール手順ライター」の類であろう。

それから最新のバイナリを Windows に入れるのは、少し扱う条件を揃えられるかどうか検討してみてからの方がいいと思う。MongoDB の最新版を Windows にインストールしても、それに対応できる Windows 用の PHP ドライバ(php_mongodb.dll)がないからだ。PECL のサイトにある最新のライブラリも古いし、mongodb/mongo-php-driver にも古いライブラリしかない。よって、Windows つまりローカルで動かしたいのであれば、Windows 用としては最新の 1.16.1 というドライバに合わせて古い MongoDB を入れたほうがいいかもしれない。というか、そもそも 1.16.1 というドライバは PHP 8.1 用なので、PHP ですら新しくて対応できない可能性もある。PHP 8.2 という条件は変えられないというなら、たぶん残る手段としては、ローカルに MongoDB を入れるのは諦めて、MongoDB Atlas(クラウド版)に API で接続して使うのがいいだろう。

ああ、忘れてた。MongoDB って日本にも拠点があるみたいなことを言ってるけど、「MongoDB Japan 合同会社」っていうのは、所在地を調べると港区の住宅街にある個人宅だ。なんなんだこれ。

[追記:2023-10-28] MongoDB について調べてみると、今回のプロジェクトで使う DBMS としては仕様が適しているとは思えないこと、それから MongoDB には相当な数のアンチがいて、オンラインでは情報が充実しているとは言えないこと(書籍は10冊以上も出ている)、そして Windows の最新の環境にライブラリがぜんぜん追随しておらず、Windows で作業する人のローカル開発環境を殆ど考慮していないという点などを考慮して、即座に使えるようなものではないと判断した(僕は Linux も UNIX も macOS も使えるが、それは単に経験があるからであって、やはり僕の開発環境は Windows だ)。RDBMS が最適かどうかはにわかに言えないとしても、その汎用性には十分過ぎるほどの実績や理論があるため、これを NoSQL だのドキュメント指向だのスケール・アウトに強いなどというスローガンだけで覆すのは難しい。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook