【分散型Discord】Matrixで動くDiscordっぽいアプリ”Element”使ってみた!

この記事の概要を簡単まとめ!

  • リアルタイム、オープンソースで軽量な通信プロトコル”Matrix”
  • 目指したのは「より安全な通信」と「分散型」
  • クライアントのリファレンス実装(=実例)が”Element”
  • のえる氏の管理するMatrix鯖でKIBEKINが実際に試してみる
  • 見た目がDiscordを意識したような構図、できることもそれらしく
  • 部屋を建てることも1vs1のチャットや通話も可能、ビデオ通話も対応
  • 他の鯖の部屋にも参加できる
  • 分散型Discordとして今後発展する可能性

新興SNSとは、急に流行するものには必ず裏が存在する。その多くはセキュリティと情報管理に不安要素を抱えるもので、β版はおろか公開版になってもその事実が公表されないことが多い。それが後で判明すれば、即座にオワコン確定となることが多い。今現在言われているのが中華系APIとサーバの使用が判明して一気に信用を失い価値がなくなりオワコン確定したClubhouse(本家)である。また、数字のないSNSが特徴であるGravityの運営元はHiClubで、これが中国・百度(baidu)関連である。早速オワコン確定の流れが来ている。どれも”Club”とついており、中国系=Clubが関係する法則でもあるのだろうか。

さて、そんな中で分散型の特性を持ったSNSやサービスが各所で注目されている中、通話機能についても分散型が注目されている。そこについてくるのは必ずJSON形式や連合といったものである。また、セキュリティについても注目されており、E2EE暗号化の採用で部屋の参加者だけしか読めない(=外部からは暗号化により読むことができない)ようになっている。つまり、管理者であっても特別な権限で許可されない限り読めないチャットルームが実現できるのである。なお犯罪悪用などについては別のお話である。

現在、焦点が当てられているのが通信プロトコル”Matrix”である。これを使ったリファレンス実装に”Element”という、Discordに似た、しかし分散型のような性質を持つチャットや通話が行えるメッセンジャーアプリケーション。これについて、KIBEKINが実際に利用してレポートしていく。

ブンブンハロー分散型Discord, どうもKIBEKINです。

通信プロトコル”Matrix”

Matrixの概要

Matrixは、リアルタイム通信英語版のためのオープン標準で軽量な通信プロトコルである。ある通信サービスプロバイダ英語版のアカウントを持つユーザが、チャットVoIP及びテレビ電話を介して、別のサービスプロバイダのユーザとコミュニケーションを行うことができるように設計されている。つまり、標準的なSMTPによる電子メールがストアアンドフォワード型の電子メールサービスで提供されているように、異なるサービスプロバイダ間でリアルタイム通信をシームレスに機能させることを目的としている。

技術的な観点から見ると、Matrixは分散型英語版リアルタイム通信のためのアプリケーション層の通信プロトコルである。Matrixはサーバのオープンな連合を介してのJSON形式のメッセージの安全な配布及び永続化のためのHTTP API及びオープンソースリファレンス実装を提供している[2][3]WebRTCを介して標準的なWebサービスと統合することができ、ブラウザ間での応用が容易である。

Matrix(プロトコル) – Wikipedia

面倒が嫌いなので引用した。Matrixは通信プロトコルであり、用途はリアルタイム通信、求める仕様にオープン標準であり軽量であることを目指したものである。また、概説から通信サービスプロバイダが同一でなくてもリアルタイム通信が可能になるように設計されているということもわかる。ただ、文字だけでは理解しにくい。実例を見なければわからないところがある。



技術的な面からの概説によれば、分散型リアルタイム通信のアプリケーション層の通信プロトコルとあり、この点から所謂Fediverseの技術であることがわかる。実際、Fediverseの一覧にも通信プロトコルとして掲載されている。また、ActivityPubでも使用されるJSON形式がMatrixでも使用されている。これは分散型および連合を形成するのに必須事項である。WebRTC1)en: Web Real-Time Communication ウェブブラウザやスマートフォンのアプリケーションにおいてシンプルなAPI経由でリアルタイム通信(=RTC)を提供する、自由でオープンソースのプロジェクトのこと。ウェブページ内で直接P2P通信することができる。これのおかげでドライバ、プラグイン、ネイティブアプリを要せずにウェブブラウザ間のボイス/ビデオチャット、ファイル共有等を実装できるようになる。参照:WebRTC – Wikipediaを利用して利用できる点で、ブラウザで使用するためにかなり楽に設計できることがわかる。

目指したのは「より安全な通信」と「分散型」

当然、ほぼ成熟している通信システムの中で新規に通信プロトコルを設計するのであれば、何の考えもなしに設計するということはあり得ない話だ。成熟した中でMatrixが目指したのは、「より安全な通信」と「分散型」である。

Matrix公式サイトでの解説によると、MatrixはEnd-to-End Encryption(E2EE)を採用している。簡単な説明をすれば、暗号化を設定した人だけが鍵を持つようにする仕組みである。この仕組みではサーバ管理者でも鍵を持たないため、管理者からはユーザのデータを勝手に復号化して閲覧することはできなくなる。またこの仕組みを採用する関係で、第三者がデータを盗んでも鍵をユーザから(何らかの形式で)盗まない限り復号化は不可能である。これまでのように管理者を攻撃すれば完全なデータが手に入る、とは限らないのである2)参照:エンドツーエンド暗号化 – Wikipedia。Matrixでは最初からこれが考慮されていたようだ。

ところで、今やあらゆるサービスや機能について「分散型」が注目される時代となっていて、それはメッセンジャーアプリも例外ではなかった。公式ページにおいてMatrixは分散型であることが明記されている。このことから、脱中央集権型運用が前提となることがわかる。過去に解説したFediverse群(Mastodon, Misskey, Pleromaを主とする)と同じ運用が見られることになる。Matrixもこれらと同様、どこか1つのMatrixを使用する鯖にアカウントを登録すれば、同じMatrixを使用する異なるインタフェースおよび通信サービスプロバイダ間であってもやり取りができる仕組みとなっている。所謂「連合」は、Matrixでも成立するということである3)参照:Introduction | Matrix.org

なお、技術的な解説については、私がMatrixを利用して鯖を建てるわけではないのでここでは省略する。詳細は公式サイトのドキュメントを色々漁るといい。

クライアントのリファレンス実装”Element”

公式サイトのドキュメントには詳細に記述されているわけで、その仕様については知識のある人が扱えば、新規のサービスを建てることは容易であろう。とはいっても文字だけの情報では、具体的にどのような動きをするのか、或いはどのように扱えばいいのか、やはり想像はつかないものである。何をするにしても、新しい技術を使うのであれば「実例」が欲しいものである。

その実例、所謂リファレンス実装が”Element“である。分類はインスタントメッセンジャーであり、Apache License 2.0下での配布となっている。開発元はNew Vector Limitedとなっている。Elementの前の名称はVectorである。なお、New Vector自体もMatrix開発に関わっている4)元々はAmdocs内で、開発はMatthew HodgsonとAmandine Le Papeによって行われた。Amdocsから資金提供を受けて行われていたが、2017年に資金提供が削減されるのを受けて、コアチームがイギリスを拠点とするMatrixとElementのサポートのための独自の会社であるNew Vectorを設立した。これが様々な資金的やり取りや対応を経て現在に至る。なお、これとは別に法的に中立的な法人である”The Matrix.org Foundation C.I.C.”というコミュニティ利益会社が2018年10月に設立されている。

ElementはMatrixを学ぶのに最適に設計されている

Matrixを開発した当初はVectorという名称で、2016年7月にβ版がリリースされている。その後に再ブランドが行われたりE2EE初期実装などが行われていた。2019年2月には、Telegram, Slack, Discordなどのツールの分散型の代替としてコミュニティ内部でのコミュニケーションに自分達で作ったMatrixを採用し、独自のサーバインスタンスを運用することを発表した。これがElementに繋がったと考えられる。いつElementに改名したかは不明だった。2019年4月にサーバのプロダクション鍵が侵害されたことに対応して、Google Playで新しいアプリをリリースした。これについてユーザにアップデートを推奨している。そして現在に至る。

このリファレンス実装はMatrixの最も成熟したクライアントとなっていて、新しいMatrixユーザが最初に利用するクライアントとして推奨されている。同時にプロジェクト(=Matrixを利用した鯖運営)もこれが推奨されている。これが推奨されているということは、個人で実験や小規模なコミュニティの運用を含め、Matrixを理解するにはElementを使用することが最適である、ということを示している。

Matrixは2014年9月、Elementは2019年2月14日に初版が公開されている。Matrix自体の文献はそれなりに揃っていると思われるが、そのリファレンス実装となるElementについては、管理者視点もユーザ視点も(日本語)文献は少なかった。そこで今回、早くもMatrixについて実験的に導入しているのえる氏によって開かれている鯖であるmatrix.fedibird.comを使い、MatrixおよびElementについて次項から解説していくこととする。




Element使ってみた!

技術的な話については毎回のことでほぼ何もわからないのでここまでにして、実際にElementを使用してみる。Wikipediaは基本的情報については記述されているが、使い方に関しては記述されていない。また、日本語文献は(探し方の問題であろうが)全く存在しなかったため、以前にPleromaを使ったときのように手探りでやっていくこととなる。したがって今回はPleromaの時のように実験をして、手探りで解決手段を探していくこととなるであろう。

なお、特別な断りがない限り、原則としてWebUI(ブラウザ版)で検証することとする。

スタート:任意の鯖に登録する

Elementを始めるにあたり、登録からスタートする。登録に際し使用するのは前述の通りのえる氏のものである。のえる氏のMatrix(Element)にアクセスすると、サインインかアカウント作成を選択するパネルが出現する。当然初めてなのでアカウント作成から行う。アカウント作成の必要事項は原則としてIDパスワードのみのシンプルなものである。メールアドレスについては任意で、これはアカウント回復時の手段として使用するためのものとなる。Misskey並のシンプルさである。登録手順及びログインまでの手順は以下に示す。今回はメール認証を行っているので、その場合の手順についてである。

  1. matrix.fidibird.comにアクセスし、トップページから[アカウントを作成]をクリック
  2. ID/パスワード2回と、任意で(・ ・ ・)メールアドレスを入力し[登録]をクリック
  3. メールアドレスを登録している場合、確認作業が必要になる
    1. 登録直後のページではメール確認作業が必要との旨のページが表示される。このタイミングでアドレスが正しければメールを受信している
    2. 受信したメールを開き、その中の[Verify Your Email Address]をクリックする
    3. Registration Successfulのページになれば確認完了である
  4. サインイン画面(トップページの[サインイン]クリック後)。ID/メール/電話のいずれかとパスワードでサインインする。電話はサインイン後の設定で登録できる
  5. サインイン成功。初期画面である
Element登録→サインイン(FB鯖)
のえる氏のFB鯖のElementの登録およびサインイン手順。かなり簡潔な登録手順となっている。基本が入りやすいことが伺える。

私の方法ではメールアドレスも同時に登録したが、基本はなくても問題ないはずだ。でなければ、わざわざ入力欄に任意の2文字は存在しないからである。また、邪魔な認証についても今回は確認することはできなかった。果たしてボット判定、どのように対策をしているかについては、のえる氏だけが知ることである。あるいはMatrix標準機能に存在する可能性もある。登録が完了しても、自動ではサインインしない。トップページからサインインを行う必要がある。初めてサインインすると、4. のような状態から開始する。Elementはここから開始である。

ちなみに、アカウント作成の時のメール登録時に存在する英文の訳は、「パスワードをリセットできるようにメールを追加します。既存の連絡先から発見できるようにするために、電子メールを使用します。」となる。おそらくはそれ以外にも全体的な連絡(アップデートなど)に使用するのであろう。

全ての設定:色々変えるのはここから

どのサービスでも、利用するには初期状態の設定を変更することはほぼ必須事項である。これはどこでも同じことであるが、Elementでは変更または自分で設定する内容は少ない。逆に言えば、シンプルであるということだ。アイコンや表示名の変更方法についてはあえて解説する必要もないので、自分のアイコンをクリックすると出てくるメニューから、全ての設定>一般の内容で出来る設定について、以下の画像で軽く解説する。

設定>一般
一般設定の全項目。アイコンや表示名の変え方は今更説明するまでもない。

アカウント作成時に任意だったメールアドレスは、ここから登録と変更が行えるほか、電話番号についてもここから登録できる。が、必須ではないので果たして登録する価値があるかは不明である。なお、ここから自分に対する検索許可設定が可能であり、そのためにはvector.imの規約に同意してメールか電話番号をその鯖に登録するシステムとなっている。これは変更可能で、別の鯖に指定することもできる。もちろん、使用しない設定も可能である。インテグレーションに関しては、これもvector鯖を利用して行うことができるようになっている。詳しいことは不明である。

最終的に垢削除をする場合はここからでもある。滅多にないと思うが。



メイン:Elementの「部屋」の使い方

さて、設定が終わったところで、実際に使用してみる。FB鯖の場合、最初に参加する部屋が「サーバについてのお知らせ」(Read専用)と「ようこそ」である。最初に参加する部屋については、最初に登録する鯖によって異なり、管理者によって個別に設定されるものである。

さて、Elementのメインとなる部屋であるが、これはチャット形式になっている。これは既存のもので言えばDiscordに非常に近いものとなっている。参考画像が以下である。

部屋の解説画面
「部屋」の例。これはFB鯖で最初に参加する部屋である。見た目はDiscordに非常に似ている。

1つの画像に一目でわかる解説を記述している。これを見れば殆どがわかるが、これらについて軽く解説していく。今回は詳細な解説は省くこととする。

基本の基本:テキストメッセージを使用する

Elementは基本をテキストメッセージでやり取りする。チャット形式のElementは最下部にメッセージ(投稿)欄があるタイプである。ここにテキストを入力して送信すれば、特別な設定がなければ部屋内の全員が閲覧可能な状態で送信される。このあたりはDiscordと全く同じように捉えてもいいだろう。

また、他のチャットアプリと同じように、画像や動画を添付可能で、絵文字やスタンプ(Elementではステッカーという名称)が使用できる。ただ、ステッカーについては管理者による追加が必要であるようだ。また、現時点ではカスタム絵文字の存在を確認することはできなかった。追加できるかどうかについては不明である。

未検証:通話機能について

通話機能については、Discordの通話専用チャンネルを作成しそこで通話およびビデオ通話を行う分離型ではなく、部屋内で通話やビデオ通話が同時に行えるものとなっている。そのため、わざわざ通話専用のチャンネルを作成する必要はなくなっている。

ただし、通話については現時点では誰もいない(=部屋の参加者が1人だけの)場合、通話機能を使用することはできないようである。もっとも私は現時点で通話する用事もなく、このためだけに検証する自信はない。そのため、実際にどうなのかは自身で試してもらいたい。

なお、今後音楽Botなどが設置できるようになった場合、この仕様が変更される可能性はある。

部屋の機能:検索や情報を見る

右上には3つのアイコンがある。これは左から検索・通知・部屋の情報となっている。

  • 部屋内検索

虫眼鏡アイコン。単語検索を行う。基本的には1単語だけの対応である。この検索はDiscordと同様の機能を持つ。違いは、検索範囲を部屋に限定するか、参加している全ての部屋を対象にするかである。検索結果についてはヒットしたものが直接表示され、別窓で表示するといったことはない。

  • 通知

ベルアイコン。新着の情報または投稿があると、ここにマークがつく。久々に来て色々溜まっている時に使える。

  • 部屋の情報

インフォメーションマーク。部屋の情報を見ることができる。単に参加者情報を見ることができるだけでなく、投稿された添付ファイルだけを遡ることもできる。また、外部に対して部屋を共有するためのリンクの取得、部屋の設定もここから入ることができる。部屋の設定については後述。

投稿に対して:ほぼDiscordに同じ、ソースコードを見れるのが違い

当然ながら部屋に参加すれば、自分を含め色々な人が投稿する。それに対する反応も、Discordに似たものとなっている。返信やリアクションに関しては、もはやFediverseお馴染みなのであえて説明するまでもない。その他のオプションは、転送は別の部屋にそのまま投稿する、共有はリンク生成、引用は”>”をつけて本文をコピーする。報告は報告である。自分の投稿の場合、削除することができる。なお、削除する場合は削除理由をつけることもできる設計となっている。

Elementでの大きな違いは、投稿のソースコードを表示することができる。このソースコードはルームIDとイベントIDも表示された、JSON形式のソースコードを表示する。このソースコードはコピーすることが可能であり、実際の本文と表示上の本文が分離されているため、表示上の見た目が装飾されていても実際はどのように記述したかがわかるようになっている。ちなみに、ElementではMarkdownを利用できる(おそらくMatrixの機能でもある)のでそれの確認にも利用できる。なお、LaTeXおよびKaTeXのコマンドを使用することはできなかった。

未検証2:個人間のチャットについて

これもまた未検証で申し訳ないのだが、Elementでは当然のことながら個人間のチャットも可能である。この場合、必ずしもフレンドになる必要はなく、また別の鯖のユーザーであっても[@ID:Matrix鯖のドメイン名]の形式で相手を指定することで、理論上誰とでも定額個人間のチャットを開始することができる。名前と数字タグによる検索ではないようだ。

追加するには、左側の自分のアイコンのある列の[連絡先]と書かれたタブの右側に存在する追加マークをクリックし、そこに出てくるテキストボックスに先の形式で相手を指定し[続行]をクリックすることで開始することができる。個人間のチャットにおいてできることは、私には検証する相手がいないので検証することはできなかったが、おそらくDiscordのようにできるものであろう。



特記事項:他の鯖の部屋にも参加できる

これまでのことは既存のSlackやDiscordと全く変わらないことである。それだけだとしたら、代替的存在に収束して、あまり見向きもされずに終わっていたであろう。しかし、前述の通りMatrixは分散型である。ということは、FB鯖と同じようにMatrixを使っている鯖同士とは連合できることを意味している。このとき、必ずしもクライアントが一致している必要はないのである。Matrixプロトコルさえ使っていればどんな鯖とでも繋がれる。

さて、その中でも特徴的と言えるのが、他鯖の部屋に、その鯖に垢を作ることなく参加することができるということである。必要な情報は鯖のドメイン名だけである。参加する方法は、画像で先に説明すると以下のようになる。

別鯖の部屋を追加する手順
FB鯖以外の鯖の部屋に参加する手順。まず、ドメインを入力して鯖自体を視認できるようにし、その後(公開されている)部屋に参加するシステムである。

左側の自分のアイコンのある列の[部屋を探す](コンパスマーク)か、部屋タブの右側にある追加マークから[Explore public rooms]をクリックし、まずは鯖を追加して部屋を探せるようにする。その上で部屋に参加する仕組みとなっている。これは実際に参加するまでには至っていないのだが、これによりMatrixプロトコルを使用する鯖同士であれば、理論上クライアント制限を受けずにどの鯖の部屋にも参加できるということになる。

Discordの場合、アカウントデータは(推測だが)1つの場所にまとめられていて、部屋への参加はそれぞれ各鯖に所属している必要がある。Matrixの場合、アカウントデータは最初に登録した鯖に置かれ、これが各所で分散している。そして特定の部屋に参加する場合でも、部屋のある鯖に参加する必要は絶対ではない5)ただし、その部屋の設定で部屋が作成された鯖以外のユーザの参加を拒否している場合、その鯖に垢を作る必要はある。ローカルTLのようなものである。ので、この点で大きな違いがあり、Discord版マストドンと言っても間違いではないような感じである。

残りの機能について:要約解説

Matrix(Element)のについて、新規が始めるにあたって必要な「基本的な部分」についてはこれくらいで十分である。ここでまだ紹介していない残りの機能について、要約して解説する。なんか解説するの面倒になった。

部屋の作り方

部屋の作り方については簡単である。部屋タブの追加マークから[新しい部屋を作成]を選択する。設定項目等について、画像で以下の通りである。

新しい部屋を作成
新しい部屋を作成する手順。実に簡単である。

公開設定に関しては後で変更することができるものである。ただし、全ての部屋の設定において、E2EE暗号化については1度設定した場合元に戻すこと(無効化)が出来ないのである。なお、暗号化に際しどのような制約が発生するかについては詳細は不明である。

全ての設定のおさらい

(自分のアイコン)>全ての設定から設定できる項目について、その全てを1つの画像にまとめたものを以下に掲載する。

全ての設定の全ての内容
全ての設定から見れる設定項目を1つにまとめたもの。拡大と別窓表示を推奨。

一般設定については先に解説した通りであるので問題ない。テーマは詳細に変更することはできない様子である。バッジは用途不明である。通知や環境設定は割と詳細に設定できるようである。音声とビデオでは先にここでマイクとカメラのアクセス許可をしておく必要がある。使用するものについてはここで変更する。

セキュリティは特に用事がなければ弄るものではない。ただし、ログイン中のセッションを確認し、不審なセッションが確認されたらそれに対応するようにはしておくといい。ちなみに、ログインできなくなったときのバックアップキーを作成することができる。

ヘルプはデバッグログを送信したり、キーボードショートカットを確認したり、バージョンを確認したり、うまく動かなくなった時にキャッシュ削除を行うことができる。頻繁に更新するような鯖であれば、これが重要になってくるであろう。

現段階では、これくらいを解説しておけば新規にMatrix/Elementを始めるにも困ることはないであろう。いよいよ書くのが面倒になってきたwこれ以上解説しても新規には過剰であると思われるので、キリがいいのでここで解説を終了する。

分散型Discordとして今後発展する可能性

ここまで、通信プロトコル”Matrix”とそのリファレンス実装となる”Element”について、のえる氏の運営するMatrix鯖(Element)で実際に使って、完全な新規が使えるようにするまでの解説を書いてきた。私的評価では、Discordを知っていればそれとほぼ同じ感覚で使えるので、決して使いづらいと感じることはない、としている。もっとも、Discordとはタイプの異なるもので、全く同じであるわけはない。

ところで近年はあらゆるサービスにおいて「分散型」が推進されている。SNSはその最たるものであるが、チャット及び通話とビデオ通話を含めた通信プロトコルについてはあまり注目されていないせいか、その情報を入手することや日本語化された文献を探すことが難しい状態にある。しかし、のえる氏をはじめとした分散型SNSで活動している人が鯖を設立し積極的に運営や宣伝を行っていることもあり、その周囲では利用者が増え始めている。ただ現段階では既存のチャットアプリの代替的存在を脱していない状況である。まだメインとなるには至っていない状況だ。

既存のアプリの利便性から使い続ける理由はわかるが、それらは多くの場合単一の鯖によって管理されていることが多い。したがって、その鯖に問題が発生すればサービスが利用不可になることは容易に予想できる。これがMatrixであれば、どこかの鯖で障害が発生しても全体としては生きているわけで、もし鯖がダメになったとしても別鯖で登録し直せば問題ない。いつ何時、「攻撃」を受けるかわからない時代、このような観点からもMatrix及びElementは分散型Discordとして、今後発展する可能性がある。その発展に注目していきたい。

なお、iOSおよびAndroidにはElementの公式アプリが存在する。その場合のやり方についてはこちらの記事を参照するといい。

 

以上、Matrixで動くDiscordっぽいアプリ”Element”使ってみた!であった。それでは、次回の記事で会おう。ン、バァーイ!

 

KIBEKIN at 01:35 Mar. 29th, 2021


スポンサーリンク




脚注

本文へ1 en: Web Real-Time Communication ウェブブラウザやスマートフォンのアプリケーションにおいてシンプルなAPI経由でリアルタイム通信(=RTC)を提供する、自由でオープンソースのプロジェクトのこと。ウェブページ内で直接P2P通信することができる。これのおかげでドライバ、プラグイン、ネイティブアプリを要せずにウェブブラウザ間のボイス/ビデオチャット、ファイル共有等を実装できるようになる。参照:WebRTC – Wikipedia
本文へ2 参照:エンドツーエンド暗号化 – Wikipedia
本文へ3 参照:Introduction | Matrix.org
本文へ4 元々はAmdocs内で、開発はMatthew HodgsonとAmandine Le Papeによって行われた。Amdocsから資金提供を受けて行われていたが、2017年に資金提供が削減されるのを受けて、コアチームがイギリスを拠点とするMatrixとElementのサポートのための独自の会社であるNew Vectorを設立した。これが様々な資金的やり取りや対応を経て現在に至る。なお、これとは別に法的に中立的な法人である”The Matrix.org Foundation C.I.C.”というコミュニティ利益会社が2018年10月に設立されている。
本文へ5 ただし、その部屋の設定で部屋が作成された鯖以外のユーザの参加を拒否している場合、その鯖に垢を作る必要はある。ローカルTLのようなものである。
KIBEKIN
会社員という働き方が合わないのに会社員になってしまってから、半ば自分からリタイア後ブログクリエイターとなり活動してきた社会不適合者。今後の活躍の約束とHIKAKINリスペクトの意味を込め、リンクス岐部からKIBEKINに改名した。

コメントを残す

メールアドレスが公開されることはありません。
名前は必須項目となります。記入をお願いいたします。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)