音声書き起こし
1. オープニング
Guest
こんにちは
Guest
こんにちは
Guest
え。今週もUIT INSIDEをやっていきましょう。UIT INSIDEは、ユーザーインターフェースと、テクノロジーを愛する開発者のためのポットキャストです。
Guest
最新のウェブ標準は、もちろん開発、フレームワークの変遷やuyxに関することまで
Guest
様々なフロントエンドの情報をキャッチアップできる、ポットキャストとしてお送りしております。twitterのハッシュタグは
Guest
シャープUIT、アンダースコアインサイドエピソードのご意見やご感想、リクエストをお気軽にツイートください。
Guest
パーソナリティーは、私、スプリングレーニングと、同じみえーポテト4dをえ、ゲストに迎えて、
Guest
デューススタディレンダー、ファンクションについてお送りしたいと思います。それではえ、よろしくお願いします
Guest
よろしくお願いします。
2. Render Functionの仕様変更
Guest
今回はえービュー3、勉強会、ビュースリスタディの4回目のレンダーファンクション会をお送りしたいと思います。
Guest
で、今回はですねデスの変更点の1つとして、レンダーファンクションのaiの変更点が挙げられました。
Guest
では、ここでちょっとおさらいをしておきたいのですが。でも、ポテトフォディーさんえ、紹介してもよいでしょう。
Guest
はいま、今回レンダーファンクションに関しての変更ということで、私、potato4dーが話させていただきます。
Guest
まず、このビースにおけるレンダーファンクションの仕様変更というところですけども、響いてくる点は、今までのファンクション、コンポーネントを作る部分、そして
Guest
今までえとクリエイトエレメントを利用していたと、レンダーファンクションの部分、ま、いわゆるjx書くような部分ですねというところが変更点となります。
Guest
まずおっきな変更として、そのレンダファンクションのところ、プレートエレメントの方から話していければと思います。
Guest
まずこれですけど、今までbjsでまあ、例えばtsxを使ったり、ま。ちょっと特別な処理を行う時に、え、ビルテンプレート、
Guest
ドット、ビーファイルのビーテンプレートではなくてですね
Guest
レンダーファンクション、コンポーネントのオブジェクト内にレンダーという関数を用意して、そこでプレイトレメントをリターンするっていう形で、書くことが度々あったかなと思います。まあ、これはjsxってる人だった
Guest
とか、ま、一部のまライブラインとか使ってるとよくあるかなと思いますけど。え、やったことがある人もそこそこいるんではないでしょうか。
Guest
で、ここなんですけど、まあ、あんまり意識することも多くはなかったかなと思いますが。レンダーにおけるクリエイトエレメントですね。とよは、これは
Guest
引数を用意して、パストのvノードを出力する関数なんですけど、そのクリエイトエレメントというのが、今までレンダー関数の第1引き数にいました。
Guest
何かしら、レンダーのファンクションを作るという時は、え、必ずえレンダーにクリエイトエレメントが依存されるんで、まあ、何か仮想ドムを1個出したいっていうだけで、
Guest
え。レンダーを用意した上で、そこの引数得である関数っていうのを別のまそのレンダー関数に渡して、数として得られたクリエイティメントをベースに。まあ、なんかファンクラーなコンポネントを作るとか、
Guest
あるいはファンクショナルのフラグを立て立てる。また、なんか、jxとかを書く時も、引き数に明示的にhみたいなのを指定して、やらないと動かないみたいな状況があったかなと思います。ただ、今回のu3からこの点が改善されました
Guest
で、どのように改善されたかというとですね。
Guest
bjのビーのパッケージですね。インポートえ、よくビーフロムビーってやる。あの、ビーのパッケージの方に、ネームエクスポートとして、h関数がえ帰ってきました。
Guest
ま、このh関数はですねクレイト、リエレメントのエリアと言いますか。ま、慣習的に使われているレンダーのことを指すんですけど、クリエイトエレメントの種類自体がえ、h関数として切り出されて、ネームドエクスポートの対象となったというような変更となります。
Guest
これによってですね、いくつかできることだとか、柔軟に書けるようになった設定があります。
Guest
ま、これまではですねえ、今言及したように、レンダーに関するような概念を作りたいのであれば、わざわざレンダー関数を用意して、レンダー関数に飛んで生きている引数をベースに
Guest
引数として取られている。え、クリエイトエレメントh関数を他の関数に渡してま、何かしらファンクショナルな処理を行うだとかま、色々なえ用途にレンダーに関する用途に使っていたんですけど、もえ、そういったものを依存なしにえ作れるようになりました。
Guest
まあ、これまでわざわざbjsのテンプレート4分にちょっといびな形で、ファンクショナルトゥルーとして
Guest
作っていた。まあ、レンダー関数とかが、まあ、ほんとにシンプルなアロファンクションのえ戻りにhを入れるだけみたいな。すごい簡単な作りで連打するものを作れるようになっております。と、
Guest
これに対するメリットっていうのは、まいくつかあるんですけど、まあ、単純にこんな感じでレンダー関数として読み取るところができるってのが1番かなと思います。
Guest
まあ、あまりですねえ、普段はえ、バベルプラグインとかまbcaiな環境であれば、ま、bcaのプラグインとして、バベル関連の設定とかを入れる
Guest
ことから、あんまりh関数自体を見ることはないかなと思いますけども。まえ、jsxの裏で動いてるのが1関数ですので、
Guest
まあ、何かjxを書くときとかも、前と比べて壁数にを取らなくてもよくなったんで、書きやすくなったっていうのをイメージしていただければいいかなと思います。せっかくですので、え、シノートの方にでも、え、サンプルコードでも渡せればいいんじゃないかなと
Guest
思っております。
Guest
はい、ありがとうございますはい、よくわかりましたそうですね、レンダーファンクション自体はま、結構。
Guest
あと、中急車以上という感じではあるんですけど、もまそのビューのテンプレート以外のもう1つのその
Guest
コンポーネントの。まあ、成人方法。それが今までだと、そのクリエイトエレベントファンクションを受け取って、それを使う必要があるっていうのが、まあ、トップレベルのAPIとして、今回切り出されたっていう
Guest
ところがまよりこうファンクショナルに書けるようになったっていう。すごいま書きやすさの上ではすごいいい。変更点ですね。
Guest
そうですね、結構これまでって、要は全部が全部ゲジスのコンポーネントにした上で、ファンクショナルっていう例外的に作らないといけなかったのがま、描画関数は、描画関数っていう単体の存在にスタンドローンになったっていうのが、結構
Guest
アーキテクチャ的な意味でも、妥当性が増えたんじゃないかなとは思いますね。
Guest
そうですよね、うん、なかなか割とこうビュースという、すごいメジャーな変更点だからこそまできるアーキテクチャ的な変更点っていうところですよね。
Guest
そうですね、
3. tsc だけで動かす Vue + TSX
Guest
レンダーファンクシンの紹介は、まあ、さっきこなった通りなんですけども、このレンダーンクションの特徴を使って、えと、ポテトォーディーさんがえ、何かと実験をされたということですので、ちょっとその内容について、今回紹介してもらいましょうか。
Guest
はい、オッケーです。今回ですけど、
Guest
何をしたかっていうのはじめに話すと、タイプスクリプトのコンパイラーtscですねtscを使って、バベルの依存なしで、b3のtsxを連打できないかっていうのを試しました。
Guest
これまで、試したことがある方はえ、ご存じかもしれないんですけど、bjsのjs
Guest
環境において、まあまともにjxとしてbjsを動作させるには、公式が出しているbjのmp出しているバベルのプラグインとバベルプラグイン、
Guest
トランスホームビtsxみたいなプラグインがあるんですけど、それがないと処理できませんでした。と
Guest
で、これもしかしたら、これもちょっとまだ試してないんで、ビデオ2でも、ちょっと特別なことをやったらいけるかもしれないんですけど、これまではそれを使わないとえ、レンダーファンクションの第1
Guest
すとして、その連打があったっていうところから、まあ、その暗黙的な依存とかがあったんで、全部が全部そ
Guest
えjsxを変換しようと思ったら、どの道そのh関数がどこから来てるかっていうところをたらないといけない。都合上、bjsのレンダーにないと動かせないみたいな状況がありました。
Guest
ま、これをうまいことやるために、まそのatベースの変更として、バベルレイヤーでま、レンダーファンクションからh関数を吊り出して、それを使ってま。他の変換も運ル関連をやって、最終的にjxとしてバリットなものを作る
Guest
みたいな処理が今まであったんですけど、
Guest
今回hカスが外に出されているので、まあ、どこでインポートされてようようと、実はtscだけでコンパイルできるんじゃないかえ、コンパイルし、動かすことができるんじゃないかと思いました。
Guest
ま、普通に考えて、tsxのって、コンパイルしても、リアクトドックリエイトエレメントになるんじゃないかっていう風に思う方が多いかなと思いますが。
Guest
こちらなんですけど、タイプスクリプトには、本来のステージ系のjsの使用追収の他に特別にjsxについての
Guest
設定がなされていますと、要は、タイクスクリプトがjsxを認識して、それを変換するという機能がその割っています。これは、コンパイルオクションのえ、jsxというものと、jsxファクトリーというものによって実現できます。
Guest
jsxっていうのはですね、プリスアブとかリアクトで設定されてるのを見たことがある方もいらっしゃるかなと思いますけど、今回の規模は、このjsxファクトリーっていうものになります。
Guest
このjxファクトリーというものはですね。コンパイルした際に、そのtsxがそれぞれのtscがtsxのえ、それぞれのvノードっていうのを何の関数で処理するかっていうところの
Guest
命名をするためのファクトリー関数を設定するっていうオプションとなります。と、つまりは、ここはデフォルトでリアクトとクリエイトエレメントになっていますが、
Guest
hと指定することによって、え、任意のまhと指定したりだとかまえば、レンダーでも、フレートエレメントでもいいんですけど、何かしらの名称
Guest
を設定することによって、右の関数にすることができます。今回はですね、これを使ってhを指定することによって、
Guest
レンダーファンクションっていうところをうまく動作させる。え、tscだけで、bjsのレンダーファンクションをえ、操作できるんじゃないかと思って、実験しました。で
Guest
やってみた結果、え、一応ちょっとしたブリッジが必要ではあったんですけど、動作するっていうところまで行けまして、まただのカウンターだけ
Guest
なんですけど、うまく実装するとこまでできました。
Guest
ちょっとですね、多分、このポッドキャストが公開される頃には、ブログか。まあ、なんかキットハブページスかなんかでホストしてると思うんで、そのサンプルっていうのを、ちょっとノートの方に書いていければと思います。こんな感じで、ディファインコンポーネントして、普通のレンダー関数が書かれていて、
Guest
ちゃんと動作し、ああ、はいはいはい
Guest
でやってることはこれパーセル環境でえ、jxファクトリーってのをhにして、ここはリアクトのままで大丈夫です。基本的には、リアクトと
Guest
ビューデスがほぼほぼ一緒のエピアになってるんで、リアクトのままえーカスだけ1にしてやるっていうような感じで、今く動いてるみたいなのが
Guest
こんな感じですね。
Guest
まさには、今のところで、バベルは全く使わずに。
Guest
そうですね。いている
Guest
そうっすね、バンドラー自体はどの道パーセルとか必要なんですけど、
Guest
まあ、バベル環境ま、最近だとヒエしかだけでバベルなしの環境の人も結構いると思うんで、
Guest
ま、そういった人でも、バベル環境なしでも動かせるってのはちょっと魅力かな。
Guest
確かにうん、動いてますね。
Guest
というのが、はい、これ実験してた
4. React と Vue における h 関数の違い
Guest
感じ、ござありがとうございます。
Guest
そうですね、結構全く、もう何の変更も加えずにというわけではなく、ちょっとそのなんてすかね。h関数のそのhiの違いを吸収するみたいな感じですかね。今回必要だったのは
Guest
そうですね、そうですね、ちょうど今とお見せしてる部分、ちょっとここと。こちらも人に書きますけど、今回、延期関数に少し変更を加えてみますと、それが何かっていうと、
Guest
bgsのh関数ってのは、ほぼほぼリアクトと似たようなとタイル。え
Guest
で、記述はできるんですけど、チルドレンの操作方法がちょっと変わってまして、bfsってのは第1引数にえ、そのタグメとかコンポーネントっていうのを設定する。第2引数にプロップスとか
Guest
ま、そういったオプションを指定するで、第3引き数以降え、無限にまあ3456とえいくつでもタ分引き数が用意されていて、そこによってチルドレンを表現するっていう感じになって
Guest
なんですけど、あれですね。あの、引数で点々々を用意する感じのスタイルで、ビージの変調数で実現されてるんですけど、
Guest
リアクトの場合はそうではなくて、え、第3引き数に配列、vノードの配列として、
Guest
チルドレンを受け取るっていうようなしになっています。とはいはい、どうしてもこの仕様のせいで、何が起こるかというと、普通にとチルドレンを2つ以上用意すると、1個目しか描画されないっていうような描
Guest
問題が、リアクトスタイルのままだとちょっと怒ってまして。はいはい、
Guest
まあ1個1個あるんで、1個の場合はちゃんと動くんですけど、2個以上の場合、例えば今だとカウンターっていうh2かな。h2があって、下にそのボタンがあると思うんですけど、カウンターっていう文字しか表示されないみたいな
Guest
問題が一勝しました。と
Guest
ということで、と、ちょっとこのままだと、リアクトスタイルだと動かないなっていうところで、今回は可変。長引き数の部分を配列化して、チルドレンとして流し込むっていうような
Guest
実装を試しにやってみてま。これは、一旦上手くいったっていうようなところで無事。レンダーファンクションをね、tscだけでうまく動作させるっていうところができたみたいなところですね。
Guest
まあ、普通に考えてあれですね。h関数を次で使うことって、ほぼほぼ100パーセントなくて、jsxのための機能だとは思うか。まあ、実際の利用ケース的には、こういう風な変換をすると、現状普通にtscだけで使えるんじゃないかなと
Guest
思います。
Guest
あとはあれですね、あの、結構細かいところですけど、ダ引数も
Guest
あのさっき見たところ、その流通とビスで結構変わってた。
Guest
そうっすね、そうっすね、するっていう
Guest
ところとかあったりして、これは割とその逆との一関数によった
Guest
プロップスが直接指定できるようになったっていうそうっすねこうとかも変わってるので、結構ブリッジとはいえ、
Guest
ほぼ第3指数の以降の変化っていう感じですね。
Guest
そうですね、なんか、あの、レンダーファンクションの時、ちょっと話しそびれたんですけど、ビュー3になったらですね。そのh関数の受け取り方っていうのが変わっていて、まあ、単純に分割、代入的にこうまとめて、引数はいろんなデータを渡せるようになっていて、
Guest
ま。これまでとは、ちょっと違うシンタックスっていう風になってるんで、まあ、これも
Guest
えリアクトとほぼほぼコンパチブルになってくれたっていうようなところかなと思います。ま、これによってですね、
Guest
まあ、何のキスを渡しても、ちゃんと子供に直下がってくれるんで。まあえ、多分特別なえ。トランスフォーマーなどもなしにこうできてるってのも、ここに通うところかなと思います。
Guest
そうですね、あと、あの結構人昔にすごいバズった。ハイパーアップっていうプレーマークとかが、はいはい、なんかすごいビュー3の1ファンクションにも似てるなっていう。
Guest
あ、そうですね、確かにあ、ちょっとこの話をすると、私、ちょっと昔ファイバーップでアプリケーションを書いてた時期があって、お。
Guest
あの、その時にこのテクニックを使って、tsxでハイパーなるハイはいはいっていうのがあって、あの、その時にあ、
Guest
ファイトアップでどうやってjsx処理してるんだろうとかま、tsx処理してるんだろうってのが、結構その時に業務でもあの既に構築されていたところ、環境だったんで、気になってやっていたら、
Guest
ジェセックスファクトリーってのが実はあるっていうのを知って、その知識がちょっと私も生かされてるところではあります。
Guest
なんでえ、そうですね、ハイパーアップもh関数をネームドエポートをしていて、それを使ってティとして処理したりとかができるっていうような作りになってま。
Guest
じゃああれですね、その仮想ド部を構築するっていう関数としての概念として、一関数っていうのは、だいぶいろんな
Guest
ところのいろんなフレームワークでも、根底で使われるところがあってま。それがほんとに細かな違いがまそれぞれあるっていう、
Guest
うん、うん、そんな認識です。私だから、ハイパーアップは、基本的にh関数のシンタックスは、リアクトと完全に同じにしてて、第三引数に採決があってまチルトレインが
Guest
指定されているっていう完全にヤトと同じ持ち方をしてるんで、そのままtscだけで処理ができるって感じですね。この辺りは結構
Guest
まみんなリアクトまれておけば、コンパシブルに使えるみたいな意味で結構広まってるかなとは思いますね。感じですかね、そうですね、ちなみにちょっとこれ余談ですけど、h関数ってどっから来たんでしょうね。
Guest
h関数は、これが祖先なのかどうかはちょっとわからないんですけれども、
Guest
一応、これがリアクトのドキュメントでは紹介されていた本当なのかな。これ、諸説あると思うんですけど、
Guest
リアクト的にはこれが祖先という扱いなんですね。いや、
Guest
違いましたリアクトじゃなくて、プリプリアクトの話ですね。プリアクトあ、プリアクトのドキュメントではまこうこれが紹介されていたお
Guest
おお、なるほど、結構興味深いっすね。ちょっとまたどっかで調べてみても面白そう。
Guest
そうですね、ま、こういうま概念自体はもう結構前からあってま。それの実装がばリアクトであったり、プリアットであったりっていうという、
Guest
そんな、なんか私は勝手にあのhtmlスペシャルチャーズを略してるだけだと思ってたんですけど。
Guest
だと、勝手に思い込んでいたが、そうではないんです。え、安全にレンダリングするみたいな意味だと勝手に思った。
Guest
なるほど、はいはい、なんかエって意味しなんです。なんか、元ネタが
Guest
あれ、なんかありそうですよね。うん、レンダーでいいじゃんとか、クリエイトエルメントでいいじゃんじゃないんで、ちょっと気になりますよ。あ、と、いうのでした
Guest
はいま、ちょっとそれはまたどっかで調べましょう。
5. Vue/Reactでの資産の相互活用の未来
Guest
ま、そんな感じで、そのhカンスレンダーファンクションのなんていうんですかね。ま、ある意味共通化みたいなところの道筋みたいなのが見えて、これはひょっとすると、理でもリアトでも使える
Guest
ま、ユニバーサルなコンポーネントみたいなのの、共通貨の道筋みたいなのは、このブリッジライブラリーみたいなのを使うことでできるんじゃないかなっては思ったんですけど、
Guest
その辺りとかどう思いますかね。
Guest
そうですね、シンタックスリアクトに寄せると割とい、
Guest
あの、現実的に見えてくるんじゃないかなとか思ってまして。多分、連打を使った場合に
Guest
どうなんでしょう。とま、bgsって結構いろんな機能があると思ってましてや、その特徴的な、
Guest
そのbgsにしかない機能とかいっぱいあると思って、また、え、イベントの渡し方1つとっても、そのエミットとかではなくて、例えば、全部オンクリックのプロップスに統一しまうとか。
Guest
ま、そういった形でリアクトにあるようなシンタは、リアクトのシンタックスの範囲で
Guest
記述する。まあ、くまでもリアとコンポーネントとして書いて、それをbgsのコンポーネントとしても、コンパイルするっていうことを
Guest
やってみると、ユニバーサルな行動っていうのは、もしかしたらできそうだなっても、ちょっと思ったりしますね。
Guest
ああ、なるほど、はいはいはい、ちょ
Guest
っとした信託スの違いをどう吸収するかっていう問題は私はありますけど、まそこさえこ乗り越えたり。例えばそのブリッジライブラとかを誰かが作ってしまえれば、
Guest
まあ、バベルみたいな変換をかまさなくても、ま、単純にライブラリーとして、
Guest
ブリッジをうまくできるんじゃないかな、とか、最近思ったりはします。まあですしまそうなってくれると
Guest
とりあえずデータサポートとしてま。bjsもリアクトと同じシンダとかtsxだったらいけるよっていうような提案の仕方もできると思うので、まあ、例えば
Guest
bjsの対応が結構。なかなかされずにみんな困っていたりして、あのストーリーブックとか、ああいうアプリケーション開発の支援ツールみたいなはいいが、
Guest
とりあえずデータとして、まあ、リアクトモードのままbj動かしたり、一部は対応できるよみたいなことができるようになっていくと、まあ、需要調査とかの意味でも結構便利になってくるんじゃないかな、とかは
Guest
ちょっと思ってますね。あ、その辺りに行きたいかなと。あ、例えばなんでしょう。
Guest
アプリケーション内で、ま、busをピーピアでペンデンシズに入れておいて、そのツール側からそのアプリケーション本体を読み込んできて、ま。そのbjsをイジェ
Guest
として、そのh関数の内容を書き換えて、ウル関連みたいなこととかをやると、まあ色々できるようになったりするんじゃないかなとか思ってますね。
Guest
こともできるんですね、また、
Guest
とかもできるかなとか思ってますね。
Guest
ま、他も。まあ、やっぱりユニバーサルな行動っていうと、まそのウェブコンポリンズライブ的には使うとかが多い。はいなとは思いますし。
Guest
あと、じさっきのジェースファクトリーの話もステンシルとか。あの、アイオニックチーム、ステンシルとかも結構同じ考えで作ってるみたいなんでま、そういった
Guest
え方法とかもあったりするかなと思うので、まあ、これからはあれかもしれないですね。あのま、bjsがこういう方向に家事切ったっていうような
Guest
最低を受けて、他もリアともちゃパチブルになれば。まあ、jsxはリアトの文法っていうよりも、あくまでもその共通文法で、まその
Guest
デファクトスタンダード的な意味での主要的な共通なものではないけれども、実際の現実的な
Guest
共通のしようと思ってま。そこの上に、各フレーマークの機能が足されるみたいな認識に変わっていくかなとかはちょっと思ったりしてますね。
Guest
確かにそうですよね、結構あのさっきのそのストーリーブックの例とか、すごい良さそうだなと思ったんですけども、結構なんて言うんですかね。その
Guest
側だけが必要みたいな、こんライブやりって結構ありそうだなと思っていて、
Guest
多分、その例えばその薬と専用の機能であったり、流線用の機能であったりっていうラガリだとなかなか。
Guest
まあ、そういう両方に適用できるコンポーネントを今すぐ作るっていうのは難しいとは思うんですけど、も
Guest
ま、例えば、そういうストーリーブックのみたいなコンポーネントであったり、
Guest
あとはなんですかね。例えば、cssフレーマークのコンポネントみたいな。そうですね、そういう結構
Guest
ライブ的には特にそういうそれこそ今だとウェブポンポンレンズとかも全然使うこともできますので、なんかそういう割と
Guest
か軽めというか、まあそこあまり依存しないライブやリから割と適応されてい、
Guest
行ってほしいなっていう気持ちはありますよね。
Guest
そうっすね、ま、基本はまずuy系だと、とりあえずcscでコンパイルしてしまうみたいなところに載せてしまえば
Guest
ま、ストーリーブックとかは、頑張ってbugsとかに追従してくれてますけど、やっぱそういうのが難しいような技術とかもあると思いますし、まあ、そのosのリソースも無限ではもちろんないので、その
Guest
あれも誰かが頑張ってメインテしてるから、動いているものであって、まあ、そこのリソースのをbjs
Guest
のためにどれだけ使うか、みたいな話とかも出てくるかなと思うんでま、そういった時に梱包ね。フレマークをたいた
Guest
コンポネントの取り扱い方法があるってのは、すごい素晴らしいことかなと思います。
Guest
うん、や、なるほど、結構じゃあ、もうこのせっかく開発されたものが
Guest
あるわけですし、結構割とそういうライブありを公開してくれることに期待してます。
Guest
なんか、お願いみたいになってしま
Guest
そらが出てくると、うん、
Guest
割とちゃん。とりあえず、
Guest
はい、そうですね、シャンスな気はするんで、ま
Guest
とはいえ、ま。いろんな人がこういうことをやり出すと、すごい便利だと思うんで、試しにこのトキャストを出した後に。でも、一旦ユニバーサルなコンポーネント書いてみるってのは、やってみても面白いかなと。
Guest
そうですね、はい、もう僕もちょっとやってみたくなりました、
Guest
私も書いてみます
6. クロージング
Guest
というわけでえ、今回はえ、リュース、スタディエンダー、ファンクションについてお送りしました。
Guest
私たちUITのメンバーが所属するLINE株式会社では、このようなフロントエンドに関する議論を日々行っております。
Guest
えービー勉強会のように、社内勉強会から始まった企画なども。色々とありますので。今後ともえUIT INSIDEでそいそのような企画を発信していきたいなと思っております。
Guest
また、このポットキャストを通じて、
Guest
ラインに興味を持っていただきましたら、カジュアル面談からでも構いませんので、ぜひページのえ、下のリンクからご連絡をお待ちしております。
Guest
それではまた次回お会いしましょう。ゲストはpotato4dーさんでした、ありがとうございました
Guest
はい、ありがとうございました。