昨今、少子化による配達労力の削減などで置き配が注目されているが、個人的に最近置き配でできないことに気が付いたのでここに記す。
それは配達拒否ができないことである。一般的に配達拒否となるケースは着払い代引きで対面となることが多く、置き配で発生することはなさそうだが、ないわけでもない。それは誤配送だ。
私は先日フレッツ光クロスの申し込みをして、三日後くらいに申し込みを取り消したのだが、既に機器の発送手配が進んでいて、NTTの社内手続き上取り消せない状態らしかったので私のほうで受け取り拒否をする必要があった。勿論受け取って返送するというのもなくはないのだが手間である。返送手続きをする私も手間だし、受け付ける配送業者も手間だし、新規配送手続きに応じるNTTも手間だろう。受け取り拒否であれば手続きはシンプルだ。
今回のケースではヤマト運輸が配送担当だったので、Webから対面受け取りを指定し、きちんと対面して受け取り拒否をすることで成立させた(デフォルトで起き配かもしれないため、念のために明示的に指定した)。なお、公式のFAQによるとお問い合わせフォームまたは電話から受け取り拒否が可能とのこと。Webやアプリからはおそらくできない。何故できないのかは不明だが、エッジケースなので実装してないとかなのかもしれない。
因みに受け取り拒否時の配送料は一般的には荷主が負うらしい。
昨今キャッシュレスや電子決済という言葉が流行っており、政府レベルで推進が続いている状況だ。しかし、そこで気になるのは現金の扱いがどうなるのかということだ。
さてこの度、新紙幣発行が近づいてきて、対応問題が以下のようにニュースになっている。
キャッシュレス対応をすれば確かに新紙幣に対応するコストは減らせるだろう。しかし、もしすべてをキャッシュレスにした場合、通貨の信用がどのように担保されるのかというのは一つ問題になると思う。決済系の事業者は民間企業であるから、基本的に通貨の信頼性を担保する役目はない。勿論、担保してもいいのだが、事業者が複数ある以上どのようにして担保されるのかや、事業者間での通貨交換をどのように実現するのかという課題は出てくるだろう。
そしてまた、問題はそれだけではないと個人的には考えている。それは決済事業者による取り扱いの取りやめである。
例えばpixiv, DLsite, Fantiaの各社がクレジットカードの取り扱い停止に対する声明を発している。最近気になっていることでも触れているが、この流れが加速するとアダルトコンテンツを取り扱っている事業者はクレジットカード決済が利用できなくなる可能性がある。またクラウドプラットフォームに拡大した場合にAWSなどがアダルトコンテンツ事業者へのホスティング停止や、アダルトコンテンツ事業者で利用できる決済システムの廃止をしてくるかもしれない。例えばPayPayはAWSで動いているとされるが、PayPayを利用してアダルトコンテンツを購入することは可能だろう。その観点で考えた場合、PayPayもプラットフォームから追放される可能性がある。
個人的にその動きが拡大した場合に憂慮しているのが、VISA, Master, AMEX, Dinersなどが日本から撤退し、JCBは人権侵害国家のシステムとして国際的に排除される可能性だ。そうなってくると究極的には日本国そのものが経済制裁の対象になる可能性もあるだろう。アダルトコンテンツの取り扱い事業者が多く、それを政府が容認しているし、何なら非欧米的なシステムや人権の取り扱いが多いということで、中露同様に非国際的な国家として弾圧を受け、経済制裁などの対象になる可能性もあるだろう。
ただしこれを回避する手段もある。日本が欧米同様の法システムと人権システムを導入することだ。日本外務省は人権問題に関する指摘は内政干渉にならないと発表しているため、要するにこれは可能である可能性が高い。しかしその場合、日本の主権というものはどうなるのかという部分が気になる。人権問題というのはどうにでもこじつけることができるし、アダルトコンテンツを扱っているというのは昨今の国際情勢からみると非常に危うい。ただ、世界中の国家を均一的な法体制にするということは国家の多様性を失わないか?最終的にローマ帝国の再来ではないかと考えたりもする。
果たしてそれでいいのだろうか?私は日本には諸外国にはない高い表現の自由や、文字通り様々な自由があると信じているが、昨今の圧力や、欧米文化の流入により、徐々に失われていくような感じを受けている。
本来通貨というのはアダルトコンテンツだろうが何だろうが使えていいものである。それが反社会勢力の締め付けなどで制限をかけるようになり、反社会的活動をしているとされるアダルトコンテンツ事業者にも波及するようになった。このままいくと日本国そのものが反国際社会的国家の烙印を受け、国際社会から追放されることがないのかというのが懸念である。
結論として言いたいことは、キャッシュレスを推進することによって日本の主権が諸外国から侵害されやすくならないかということと、日本国自体がアダルトコンテンツ規制方面に舵切りを行うようにならないかという懸念、そして日本という主権国家の個性が徐々に失われていき、最後には無にならないかということだ。
この記事では下図のシステム構成を前提に話を進めるものとする。この時、BFFの部分のアーキテクチャをREST APIにするか、GraphQLにするかというのが今回の話。
REST API
長所
- Web標準であるため特別な技術が必要ない
- ファイルアップロードのような特殊な通信プロセスも何も考えずに実装できる
- エラーもエラーコードを返せばいい
- 学習コストが低い
- 設計が単純
- エンドポイントに何かを要求すれば、それに対する応答が帰ってくるという点で非常にシンプル
- CRUDはGET/POST/PUT/DELETEで分かれており、これも単純
- 依存するライブラリがない
- 破壊的変更を受ける可能性がない
- renovateによるアップデート地獄とも無縁
- BFFとフロントエンドで型情報の共有が容易
- BFFをTypeScriptで実装していれば、そのまま型情報が流用できるし、他の言語で実装していてもOpenAPIを作り、そこから型情報を得ることが可能だ
- curlからリクエストを投げやすい
- 基本的にペイロードが単純であるため
短所
- 複数のデータを取得する際に複数回APIを呼ぶ必要があり、オーバヘッドが大きい
- 今回のケースでは呼び出し先のAPIはBFFによって集約されているため、適切にエンドポイントを設計すればこの問題は回避できる
- オーバーフェッチとアンダーフェッチ
- データを取得しすぎたり、取得しきれないといった問題が発生することがある
- 例えば
/api/v1/user
からユーザー名だけを取得したい場合に、ユーザーIDや年齢といった余計なデータが付随してしまうことがあったり、このエンドポイントからそのユーザーのログイン履歴を取得することができなければそれはアンダーフェッチになる - 今回のケースでは呼び出し先のAPIはBFFによって集約されているため、適切にエンドポイントを設計すればこの問題は回避できる
- エンドポイントが増えすぎると何が何かわからなくなる
- GraphQLでもQueryが増えすぎれば同様の問題だと思うのでREST API固有の問題だとは思わない
- レガシーな技術
- レガシーというのはそれだけで悪である
GraphQL
長所
- モダンであり、流行っている
- モダンであり、流行っているということはREST APIより良い選択肢であると言える可能性がある
- クエリを利用した柔軟な要求が可能
- REST APIと異なり特定のエンドポイントに縛られることがない
- またクエリを読むことで、フロントエンド側の実装のみで、どのような要求なのかを知ることができる
- フロントエンド側で取得したいデータを制御できる
- エコシステムが充実している
- キャッシュやエラーハンドリングは勿論のこと、Reactなど特定のフレームワークと統合するための仕組みが存在する
- デバッグ用のブラウザ拡張機能が存在する
- デバッグ用のブラウザ拡張機能が存在し、これがあるとデバッグがしやすい
短所
- Web標準ではない
- ファイルアップロードのような特殊な通信プロセスは追加のライブラリなどが必要になるケースがある
- 学習コストが高い
- 非常に充実したエコシステムが存在するということは反面学ぶことも多いということになる
- Web標準ではないが通信にはHTTPを使っているため、Web標準を知らなくていいわけではない
- GraphQL標準のようなものは存在し、それと別にライブラリの構成についても学ぶ必要がある
- REST APIのノリで利用するのであれば使う意味がない
- 非常に充実したエコシステムが存在するということは反面学ぶことも多いということになる
- 型システムとの相性が悪い
- クエリを利用し柔軟にデータを要求できるということはデータ構造が不定であるため、静的型付け言語との相性が悪い
- 多くの場合、辞書型を使って処理することになると思うが、このままでは不具合を引き起こしやすく、型の正規化を行う場合余計な処理プロセスが入ってしまう
- また型の正規化をするための関数を個別に作っているとやっていることがREST APIと大差なくなる
- 設計が難しい
- スキーマ設計が難しいと言われており、HowTo記事が多くある。AWSにさえある
- 何でもかんでも取得できる魔法のリゾルバみたいなのを作ってしまうとフロントエンド側で取得できてはならないデータまで取得できてしまうためよく考える必要がある
- 例えばクエリに応じた内容をDBから引っこ抜いてくる実装だったりすると、他のユーザーの情報を取得するなどができてしまうので結局BFF側でもある程度の作りこみが必要になる
- 他にもN+1問題が起きるとパフォーマンスが悪くなるどころか、最悪サーバーが落ちることすらあり得るだろう
- 実装が難しい
- 学習コストが高い部分と同じだが、全員がGraphQLとそのライブラリの理念を理解するのはあまり現実的ではなく、実装が難しくなる要因になると思う
- 開発ツールの対応状況があまりよくない
- VSCodeを開発に使おうとしたときにGraphQLの対応状況があまりよくなく、入力補完やLintなどをいい感じにしてくれる存在がいない
- ライブラリの保守作業が必要
- ライブラリはアップデートされ、時として破壊的変更も起きるものなので、それらの対応が必要
- renovate地獄の一翼を担う存在になる
- curlからリクエストを投げづらい
- クエリ文が複雑になればなるほど投げづらくなる
- 下手したらこれだけでオーバーフェッチとかどうでもよくなるレベルだと思う
トラペジウムというアニメ映画を見てきた。余りに衝撃的だったので記事にしてみようと思う。
実は映画館の予告とかで存在は知っていたのだが、キービジュアルとAKB48系ということで初めは見る気がなかった。しかし映画館でポスターを見た時、これは見ないといけないと思ったのだ。
ポスターを見ると色々あるが、個人的にはこの辺りが刺さった。「楽しくなかったら許さないからね。」「来なさい、死にものぐるいで。」「ボランティア活動とか興味ないですか?」「私たちは元々友達だったんだから。」どう考えても狂気がこもったメッセージである。正気ではない。見ないと損をする。瞬時に脳裏をその感情がよぎった。
そして観てきた感想だが、これはすごくよかった。人の感情がこれでもかと詰まった作品だ。内容を端的に言うと精神的に未熟な学生が、挑戦と失敗を繰り返し苦汁をなめながら、立派な大人になる過程を描いた成長譚だ。
登場人物としては絵に描いたような箱入りお嬢様、陰キャ系の技術オタク女子、いじめられっ子根暗から整形で転生し普通人間に擬態した女子、頭がよくスペックは高いものの精根腐りまくりで強かなアイドル志望主人公といった感じで、非常に個性的だ。
主人公はアイドル仲間を集めるために東西南北の名前が付いた高校から謀略的にメンバーを集める。友達になろう、技術のことに興味があります、そんな噓を重ねてどんどん人を集める。中には、その学校の男子生徒の下心を逆手にとって勧誘するシーンさえもある。ここはこの作品のキーとなるポイントで、エンディングで最も輝く伏線として機能することになる。
そして絆づくりをしたり、将来アイドルとして有名になったときに経歴を調べられても問題がないようなアリバイ工作まで、様々な謀りを行う。高校生とは思えない行動力である。
しかし偽りの絆で互いの意思とは関係なく集められたアイドルはすぐに破綻する。それはもう全員感情を限界まで発露するのだ。「こんなことしたくない!」「このままでは私は壊れてしまう!」そういったことを次々と話にするのである。
それから間もなくし、アイドルは解散する。主人公は他の全員から責められる。そして全員解散する。これで終わりか…と思うものの、そこからまた絆を取り戻すストーリーがあり、この一件をきっかけに全員がそれぞれの夢を見つけ、大人になりそれぞれの夢を達成し、また出会う。
そしてその時、昔下心をもって近づき、結局実らず、利用されるだけだった真司が、展示会を開く。すると、そこにはかつて、まだみんな楽しく本当に笑っていたころの集合写真があったのだ。そのタイトルこそが、そうtrapeziumなのだ。真司は星を撮影することが好きなカメラマンだった。そして、この写真は星として輝くアイドルを撮影した一枚だったのだ。
所々で出てくる主人公の悪態や自己中心的な態度、傲慢さ、他の登場人物から発露される葛藤、公開、憎しみ、そういった強い感情が多く表現されており、非常に人間味のあるストーリーで個人的にかなり良かった。
しかし本作は映画の予告シーンやキービジュアルからは全く予想できないような内容だったので、恐らくギャップを楽しんでほしいという思いがあるのかもしれないが、そこまで名のある原作ではないこともあり、映画館はガラガラだった。元々はよくあるアイドル物的な内容に終始する宣伝しか打たれていなかったと思う。口コミは悪くないように見えるが、設定が複雑でセンチメンタルな感情を描いた作品ということで、端的に言うとめんどくさいオタク向け作品であり、恐らくそこまでヒットすることはないだろう。どのくらい面倒かというと岡田麿里作品よりも面倒だ。個人的には、こういうのがかなり好きなのだが、残念ながら基本的に私が好む作品はヒットしない。
二回目を見てきたので、トラペジウムを見てきた その2を書いた。
最近さくらのレンタルサーバーでホスティングサイトが閲覧できないという声をしばしば見るし、私もよく遭遇するのでそれを解決する方法を紹介する。Microsoft EdgeとGoogle Chromeでの設定方法を紹介する。
Microsoft Edge
- 設定を開く
- Cookie とサイトのアクセス許可を開く
- セキュリティで保護されていないコンテンツを開く
- 「許可」に
https://*
を追加する
設定画面のURLとしてはedge://settings/content/insecureContent
からいける。
Google Chrome
- 設定を開く
- プライバシーとセキュリティを開く
- サイトの設定を開く
- 安全でないコンテンツを開く
- 「安全でないコンテンツの表示を許可するサイト」に
https://*
を追加する
設定画面のURLとしてはchrome://settings/content/insecureContent
からいける。