FXブログ

バイナリデータとは

バイナリデータとは
エンジニア" />

マルウェアや望ましくないソフトウェア

Google では、ユーザー エクスペリエンスに悪影響を及ぼすソフトウェアやダウンロード可能な実行ファイルがウェブサイトでホストされていないかどうかを確認しています。マルウェアおよび望ましくないソフトウェアは、ダウンロード可能なバイナリ、またはウェブサイトで実行され、ウェブサイトを訪問したユーザーに影響を与えるアプリケーションのいずれかです。サイトでホストされている不審なファイルの一覧は、[セキュリティの問題] レポートで確認できます。

マルウェアとは

マルウェアとは、ソフトウェアまたはモバイルアプリであり、特にパソコン、モバイル デバイス、それらで実行されているソフトウェア、パソコンやモバイル デバイスのユーザーに対して有害な影響を与えることを目的として設計されたものを指します。マルウェアは、ユーザーの同意なしにソフトウェアをインストールする、ウイルスなどの有害なソフトウェアをインストールするなど、悪意のある動作を示します。ダウンロード可能なファイルがマルウェアとみなされることをウェブサイトの所有者が知らずに、こうしたバイナリを意図せずホストしてしまうことがあります。

  • ユーザーを悪意のあるダウンロードから保護するための Google の取り組みについて詳しくは、Google オンライン セキュリティ ブログの悪意のあるダウンロードからのユーザーの保護に関する記事をご覧ください。
  • ウェブ上の安全なソフトウェアに関する Google の基準については、望ましくないソフトウェアのポリシーをご覧ください。

望ましくないソフトウェアとは

望ましくないソフトウェアからユーザーを保護するための Google の取り組みについて詳しくは、Google オンライン セキュリティ ブログの意図しないダウンロードに関する記事をご覧ください。

問題の解決

ガイドライン

不実表示の禁止

  • ソフトウェアの目的と意図をユーザーに正確に伝えてください。ユーザーがソフトウェアをダウンロードする際は、ダウンロード内容を明瞭に示す広告を適切に表示し、ユーザーがそれをクリックすることによってダウンロード内容を正確に把握した状態で、自身の意思に基づきソフトウェアをダウンロードできるようにする必要があります。ユーザーをダウンロードに誘導する広告では、次のような虚偽の内容または不正確な内容を表示しないでください。
    • 広告に「ダウンロード」や「再生する」などの単語のみが記載され、広告対象のソフトウェアが明示されていない。
    • 「再生する」ボタンでダウンロードに誘導する。
    • パブリッシャーのウェブサイトに似た外観を持ち、コンテンツ(動画など)の提供と誤認させて、実際には無関係のソフトウェアのダウンロードに誘導する広告。
    • Google のオンライン セキュリティのブログでソーシャル エンジニアリングに関する記事をご覧ください。

    ソフトウェアに関するガイドライン

    • Chrome の設定を変更するプログラムの場合は Google の Settings API を使用してください。ユーザーのデフォルトの検索設定、起動ページ、新しいタブの画面に対する変更は Chrome バイナリデータとは Settings Override API を介して行う必要があります。これを行うには Chrome 拡張機能を使用するとともに、拡張機能のインストール フローを遵守することが必要です。
    • ブラウザとオペレーティング システムのダイアログでユーザーに適切に通知が表示されるようにしてください。ブラウザやオペレーティング システムからユーザーに表示される通知(特に、ブラウザや OS に対する変更をユーザーに伝えるもの)は非表示にしないでください。
    • コードへの署名をおすすめします。バイナリが未署名であることは、バイナリを望ましくないソフトウェアとして報告する根拠とはなりませんが、コード署名機関によって発行された、確認済みの有効なコード署名(確認可能な公開元情報が記載されたもの)をプログラムに含めることをおすすめします。
    • TLS 接続や SSL 接続によるセキュリティと保護手段の効果を低下させないでください。アプリケーションでルート認証局証明書をインストールすることはできません。エキスパートによるソフトウェアのデバッグや調査を目的とした場合を除き、ソフトウェアで バイナリデータとは バイナリデータとは SSL 接続や TLS 接続を傍受することはできません。詳細については、関連する Google のセキュリティに関するブログ記事をご覧ください。
    • ユーザーのデータを保護してください。ソフトウェア(モバイルアプリを含む)がユーザーの個人データをサーバーに送信できるのは、その個人データがアプリの機能に関係しており、かつ、個人データを送信することをユーザーに開示しており、データ送信を暗号化している場合に限られます。
    • 有害な影響を及ぼさないようにしてください。バイナリを使用する場合は、ユーザーのブラウジング エクスペリエンスを尊重し、有害な影響を及ぼすことのないようにする必要があります。ダウンロード可能なバイナリについて、次の基本的なポリシーを遵守していることをご確認ください。
      • ブラウザのリセット機能を阻止しないでください。Chrome のブラウザ設定のリセットボタンについてご確認ください。
      • 変更の設定に関して、ブラウザまたはオペレーティング システムの UI コントロールをバイパスしない、または非表示にしないでください。プログラムでは、ブラウザで発生する可能性がある設定の変更について、ユーザーに通知を行いコントロールする必要があります。Chrome の設定を変更するには Settings API を使用します(こちらの Chromium ブログの投稿をご覧ください)。
      • Google Chrome の機能を変更する場合は拡張機能を使用し、他のプログラマティックな手段によりブラウザの動作を変更しないでください。たとえば、プログラムで DLL(ダイナミック リンク ライブラリ)を使用してブラウザに広告を挿入することや、トラフィックを傍受するプロキシをデプロイすること、LSP(レイヤード サービス プロバイダ)を使用してユーザーの操作を傍受すること、Chrome バイナリにパッチを適用して各ウェブページに新しいユーザー インターフェースを挿入することは回避してください。
      • 製品やコンポーネントの説明でユーザーに恐怖心を与えないでください。また、虚偽の表記や誤解を招く表現をしないでください。たとえば、製品において、システムのセキュリティ状態の危険度やウイルス感染について、虚偽の内容を伝えないでください。また、レジストリのクリーンアップ ツールのようなプログラムにおいて、ユーザーのパソコンやデバイスの状態を警告するメッセージを表示することや、パソコンを最適化できると主張することは避けてください。
      • アンインストールのプロセスは、確認しやすく簡単なものとし、脅しを伴わないようにしてください。プログラムでは、ブラウザやシステムを以前の設定に戻すための手順を明示する必要があります。アンインストーラにより、すべてのコンポーネントが削除されるようにしてください。また、アンインストーラでは、ユーザーにアンインストール プロセスの続行をやめさせるようなこと(たとえば、該当のソフトウェアをアンインストールした場合にユーザーのシステムやプライバシーに悪影響が及ぶ可能性があることを示すなど)はしないでください。

      Chrome 拡張機能に関するガイドライン

      • すべての拡張機能は情報の開示と Chrome へのインストールにおいてポリシーを遵守する必要があります。拡張機能は、Chrome バイナリデータとは ウェブストアでホストされ、デフォルトで無効にされており、かつ Chrome ウェブストアのポリシー(単一の目的に関するポリシーを含む)を遵守していなければなりません。プログラムから拡張機能をインストールする場合は、公認の Chrome 拡張機能インストール フローを使用する必要があります。このフローでは Chrome 内で拡張機能の有効化を求めるプロンプトがユーザーに表示されます。設定の変更をユーザーに通知する Chrome のダイアログを拡張機能で非表示にすることはできません。
      • Chrome 拡張機能の削除方法について、ユーザーに手順を示してください。ユーザーがプログラムをアンインストールする際には、そのプログラムと一緒にインストールされたものもすべて削除されるようにすることが重要です。アンインストールのフローには、ユーザーが自分で拡張機能そのものを無効にして削除するための手順が含まれます。
      • バイナリがブラウザのアドオンをインストールする、またはデフォルトのブラウザ設定を変更する場合は、ブラウザでサポートされるインストール フローと API に従う必要があります。たとえば、バイナリで Chrome 拡張機能をインストールする場合は、Chrome 拡張機能が Chrome ウェブストアでホストされ、Chrome のデベロッパー バイナリデータとは プログラム ポリシーを遵守している必要があります。Chrome の拡張機能配信の代替オプションに関するポリシーに違反する Chrome 拡張機能をインストールしたバイナリは、マルウェアと判断されます。 バイナリデータとは
          に関する Chromium ブログ、オンライン セキュリティ ブログをご覧ください。 についての記事をご覧ください。

        モバイルアプリに関するガイドライン

        データを収集する意図をユーザーに伝えてください。デバイス上のデータ(サードパーティのアカウント、メール、電話番号、インストール済みのアプリ、モバイル バイナリデータとは デバイス上のファイルに関するデータなど)の収集および送信を開始する前に、ユーザーがこれに同意できる機会を設けてください。収集したユーザーの個人データや機密データについては、最新の暗号化技術を使用して(たとえば、HTTPS 経由で)転送するなど、セキュリティを確保した状態で処理するようにします。Play 以外のアプリの場合は、アプリ内でのデータ収集についてユーザーに開示する必要があります。Google Play アプリで開示を行う場合は、Play のポリシーを遵守する必要があります。公開しているアプリの用途の範囲を超えるデータを収集しないでください。

        Google Play を通じて配布されるアプリは、デベロッパー プログラム ポリシーとデベロッパー販売 / 配布契約、それらの定める追加要件を遵守する必要があります。

        Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 バイナリデータとは License, and code samples are licensed under the Apache 2.0 バイナリデータとは License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

        MarkLogic Data Hub バイナリデータの取り込みについて

        今回のエントリでは、MarkLogic Data HubにおけるIngestion Step(読み込みステップ)を用いて、PDFなどのバイナリデータを読み込む場合の注意点および、バイナリデータに対する検索を実現するための方法について説明します。
        既にMarkLogic Data Hubの概要および、フローやステップに関する基礎知識をお持ちの方を読者対象としておりますので、これからMarkLogic Data Hubについて学ばれるという方は、下記のドキュメントやチュートリアルを先にご参照ください。

        バイナリデータの取り込み

        Ingestion Stepの設定項目であるSource Format, Target バイナリデータとは Format をBinaryに変更することによって、画像やPDF、オフィス文書などのバイナリデータについても、MarkLogicにそのまま取り込むことが可能です。

        Ingest Stepに対する設定項目の中で、上記のサンプルPDFファイルを含んだディレクトリをSource Directory Pathに指定します。
        また、Ingest バイナリデータとは Step内のSource Formatと、Target FormatをそれぞれBinaryに変更します。

        読み込み後のバイナリデータの確認

        Browse Data から、STAGINGデータベースを確認します。ステップ名と同一のコレクション名で絞り込むと、下記のようにサンプルデータであるPDFファイルが格納されていることが確認できます。
        一方で、CSVやJSONなどを読む込んだ場合とは異なり、スニペットは表示されておらず、クリックしても内部のテキストやコンテンツは表示されません。

        続いて、クエリコンソールからも確認を行います。クエリコンソールにアクセスを行い、cts.wordQueryクエリをSTAGING データベースに対して発行します。
        インストレーションガイドですので、“インストール”は頻出単語となっていますが、クエリにマッチするドキュメントは存在しないという結果になります。

        このようにバイナリデータの場合、単にMarkLogicにデータを読み込んだだけでは、内部のテキストやメタデータに関するインデックスは作成されず、全文検索を行うことが出来ません。
        テキスト等の内部コンテンツに対する検索要件が存在する場合、テキストやメタデータの抽出が必要となります。
        これらの要件を実現するためには、MarkLogicが提供するAPIを利用するか、外部のソリューションと組み合わせる必要があります。
        なお、外部のソリューションを用いる場合は、抽出したメタデータをMarkLogic内に戻してあげる必要があります。

        MarkLogicはバイナリデータのメタデータ抽出を行うための仕組みをいくつか提供しています。今回のエントリでは代表例として、Document Filter APIについてご紹介します。
        ※Document Filterの利用にあたっては、MarkLogic Converterのインストールが事前に必要です。

        Document Filter APIを利用することにより、対応フォーマットのファイルであれば、バイナリデータのURIを引数に渡すことにより、テキストやメタデータをXHTML形式で抽出することが可能です。
        試しに、STAGINGデータベースに読み込まれたサンプルデータのPDFファイルに対して、Document Filterを適用してみます。

        この結果をMarkLogic内で保存することにより、バイナリデータそのものに含まれるテキスト等についても、クエリ対象にすることが可能です。実装方式は要件によって異なってきますが、今回はシンプルにCustom Stepを追加し、その中でDocument Filterの処理を追加する場合についてご紹介します。

        Document Filter処理の追加

        Custom Stepを追加し、自動生成されるmain.sjs ファイルを編集していきます。

        //メタデータ保持用のURI定義
        newContent.uri = id + “.xhtml”;

        1. と 3.は任意ですが、これらを行わない場合はDocument Filterの出力(.xhtml)のみがFINALデータベースに書き込まれる形となりますので、FINALデータベースには元のバイナリデータは書き込みは行われません。

        main.sjsモジュールの編集・再デプロイ後、”RUN”ボタンをクリックして、再度フローを実行します。FINALデータベースを確認し、バイナリデータとDocument Filterを利用して抽出されたデータ(.xhtml)の両方が書き込まれていることを確認します。Document Filterの出力を含むデータの場合、テキストの中身が確認できる状態になっていることがわかります。

        今回はバイナリデータを取り扱う場合の注意点および、Document Filter APIを活用したテキストおよびメタデータ抽出の方法についてご紹介しました。
        MarkLogicではDocument Filter以外にも、より高度な抽出設定が可能なxdmp.pdfConvertやxdmp.wordConvertといったAPIも存在しておりますので、ご興味のある方は是非試してみてください。

        Koichi Noda

        前職では、システム連携領域を中心としたミドルウェアソリューションのプリセールスエンジニアを経験。
        その後、MarkLogicが持つ可能性に魅力を感じ、2017年に東京オフィス入社。
        現在は、MarkLogicの価値を国内の様々なお客様にお伝えするべく、
        日々の案件活動を技術面から支える活動をしています。

        バイナリファイルについて、初心者にも分かり易く説明します

        駆け出し<br></p>
<p>エンジニア

        2進数が得意なモグラ

        バイナリデータとは10年以上の付き合いとなる、 画像処理 エンジニアのつちもぐらが説明します。

        画像処理エンジニアのつちもぐらです。 仕事では色々なフォーマットのバイナリファイルをPythonやC++に読み込ませています。

        バイナリファイルとは何か

        まず、バイナリとは2進数の事です。そして バイナリファイルとは、バイナリ(2進数)のデータが、必要なだけ延々と続くファイル の事です。データの値やサイズに制約はありません。

        ここでテキストエディタでは”0″が4つなのに、バイナリエディタでは”30″が4つ並んでいます。これは、アスキーコード表で文字 “0” が16進の “30” (2進の”0011_0000″) に割り当てられているからです。

        文字コード表としては、半角文字に対応したアスキーコード表や、全角文字に対応したUTF-8, Shift_JIS, EUC-JIS といったものがあります。

        バイナリファイルは何故必要なの?

        ファイルサイズを小さく出来る

        数値のみを扱うデータファイルの場合、バイナリファイルの方がファイルサイズを小さく出来ます。バイナリファイルだと、0(00)から255(FF)という数値を1バイトで表現する事が出来ます。()の中の数値は、16進数を示しています。

        高速に読み書き出来る

        実際にバイナリファイルを扱う事となったら

        そのような時に狼狽しなくて済むように、また周囲の人がそのような状態となっていたら助けてあげられるように、 自分が得意とする言語でバイナリデータくらいは鼻歌交じりで扱えるようになっておきましょう 。どの言語でも、ググれば直ぐにやり方は見つかるかと思います。

        JPEGのExif情報をとっかかりにバイナリデータと戯れる


        まず始まるのは、TIFFヘッダで、バイトオーダー、TIFFバージョン、0th バイナリデータとは IFDの開始位置までのオフセット情報がここで表されています。
        バイトオーダーは、今回は「49 49」でリトルエンディアンでデータが並んでいる事を表します。
        ビッグエンディアンの場合は「4D 4D」となります。
        以降、リトルエンディアン、ビッグエンディアンの違いで、各情報の並び順が逆になりますので、Apple製品で撮影した写真がお手元にある場合は、ビッグエンディアンなので、注意が必要です。
        バイトオーダーという言葉の説明は、Wikipediaが詳しいかなと思います。
        また、このデータの開始位置がこの先に出てくる データアドレスのオフセットの基準位置 になりますので、割と重要なポジションです。

        続いて、0th IFDというものが出てきます。IFDは、Image File Directoryの略で、付属情報のまとまりを表します。
        一つのIFDの中に、幾つかのタグがまとめられているというイメージです。
        データの種類によって、IFDが分けられています。

        IFDの構造 バイナリデータとは
        0th IFD タグ数 2バイト
        タグ1 12バイト
        タグ2 12バイト
        タグ3 12バイト
        ・・・
        タグN 12バイト
        1st IFDへのオフセット値 4バイト
        0th バイナリデータとは IFD内の値 可変
        • 「タグ数」は、0th IFD内に何個のタグがあるかを表します。
        • 「1st IFDへのオフセット値」は、続くIFD(0th IFDの場合は1st IFD、1st IFDの場合は2nd IFD)が始まるアドレスまでのオフセット値になります。(ここが0の場合は、次のIFDはないという意味になります)
        • 「0th IFD内の値」は、各タグに割り当てられたバイト数で収まらないデータが入ります。(構造の仕組みは後ほど)
        タグの構造 バイナリデータとは
        0th IFD タグ1 タグ番号 2バイト
        タイプ 2バイト
        カウント 4バイト
        値までのオフセット値 4バイト
        タグ2 タグ番号 2バイト
        タイプ 2バイト
        カウント 4バイト
        値までのオフセット値 4バイト
        • 「タグ番号」は、結構な種類があって、列挙しきれません。仕様書のこの辺りから始まるのを、照らし合わせていくのが、一番確実かと思いますが、結構やってられない感もあるので、Exifの取得に関係あるものは都度紹介していきます。
        • 「タイプ」は、データ型です。型付けがある言語でのプログラミングを経験された方にはよく分かる、あれです。8種類しかないので、後ほどご紹介します。
        • 「カウント」は、タグ内に何個のデータが収められているかを表します。
        • 「値までのオフセット値」は、4バイトよりも大きいデータの場合、この中には入らない為、別途可変領域を割り当てて値を入れるようにする仕組みのため、そのデータへの場所へのオフセット値になります。例外があって、4バイト以下のデータはこのオフセット値用の部分にデータを入れてしまいます。
        タイプの一覧 バイナリデータとは
        タイプの値 説明 カウントの取り方
        1 BYTE 8ビット符号なし整数
        2 ASCII 文字列。文字数には、文字列の終端を表す最後のNULLも含める 「BEYOND」の場合は、「B」「E」「Y」「O」「N」「D」「\0」 → 7カウント
        3 SHORT 16ビット(2バイト)符号なし整数 5の場合は1カウント
        4 LONG 32ビット(4バイト)符号なし整数 5の場合は1カウント
        5 RATIONAL LONG2個分で、最初のLONGを分子、2個目のLONGを分母とする 5/4の場合は1
        7 UNDEFINED フィールドの定義により、どんな値をとってもいい8ビットのデータ 0xFF、0x01、0x45、0x11、0xDD、で5カウント(8ビットで1カウントのため)
        9 SLONG 32ビット(4バイト)符号付き整数 5で1カウント
        10 SRATIONAL SLONG2古文で、最初のSLONGを分子、2個目のSLONGを分母とする 5/4で1カウント

        IFDを読んでみる


        こちらのテーブルを頼りに、まずは先頭の2バイトを抜き出します。
        「0B 00」の部分は、0th IFDに何個のタグが含まれているかを表す部分です。
        このデータのバイトオーダーはリトルエンディアンなので、人間が読む場合は、0x000Bとなります。
        つまり、11ですね。
        なので、0th IFDには、11個のタグが含まれている、という事になります。

        エクセルソフトは、エンドツーエンドの DevOps プラットフォームを提供する JFrog 社の製品を販売開始しました。

        エクセルソフト株式会社 (東京都港区) は、バイナリのリポジトリを管理し、水が流れるようにソフトウェアをシームレスにアップデートする Liquid Software ビジョンを掲げ、エンドツーエンドの DevOps バイナリデータとは プラットフォームを提供する JFrog 社の製品 JFrog Platform を 2022年 5月 30日より日本国内で販売開始します。エクセルソフトは JFrog 社と協力し、日本国内での バイナリデータとは バイナリデータとは JFrog 製品の販売とサポート サービスの拡張を図ってまいります。
        <下へ続く>


        「JFrog は、常に時代のニーズに応えるべく新しい製品をソフトウェア開発者に提供するエクセルソフトとのパートナーシップにより、日本市場における DevSecOps 採用の加速を支援できることを大変嬉しく思います。エクセルソフトの付加価値を提供するサービスと JFrog の受賞歴のある DevOps プラットフォームの組み合わせによって、ソフトウェア開発者の バイナリデータとは DX (デジタル トランスフォーメンション) 推進に貢献できることを楽しみにしています。」
        JFrog 社 APAC 営業、地域担当副社長 Doron Ben Sira バイナリデータとは 氏からのコメント

        ■ 製品名: JFrog Platform は以下の製品で構成されています:
        JFrog Artifactory、JFrog Xray、JFrog Pipeline、
        JFrog Distribution、JFrog Container Registry、JFrog Connect

        ■ 製品カテゴリ:
        DevOps プラットフォーム

        ■ 製品概要:
        JFrog Platform では、業界初のハイブリット、エンドツーエンド、ユニバーサル DevOps プラットフォームを使用して、ソース管理から配布までのソフトウェア開発ワークフローを管理します。

        また、ソフトウェアの開発、配布に対する企業のニーズに対応するよう設計されており、DevOps チームにソフトウェアの作成、管理、配布を容易にするために必要なツールを提供します。これらのツールには CI/CD ツール、バイナリ管理、成果物の達成度、セキュリティと脆弱性保護、リソース管理、分析、配布に至るまで、すべてをカバーします。

        さらに、JFrog Platform では Docker や Python、NuGet、Conda などのテクノロジとの統合が可能です。これを使用すれば、生産性を向上させ、管理に必要な労力を削減し、さまざまなパーツの自動統合を促進できます。

        世界初のユニバーサル リポジトリとして JFrog Artifactory は JFrog Platform のミッション クリティカルな中心部であり、開発サイクルを通してバイナリを保存、管理し、複製機能により、すべてのチームが同様のコンポーネントを使用できるようにします。

        JFrog Xray はすべてのコンポーネント、ビルド、依存関係をより深くスキャンして脆弱性や、ライセンス違反を調べ、さまざまなパラメータに基づいたポリシー アラートを提供します。

        ■ JFrog Platform バイナリデータとは の主な特長:

        完全に自動化された DevOps プラットフォームでコード作成から本番環境に至るまで信頼性の高いソフトウェア リリースを提供します。
        ユーザー、リソース、アクセス権を備えた DevOps プロジェクトにオンボードし、デプロイの頻度を向上します。
        オープンソースの脆弱性とライセンス コンプライアンス違反を事前に検出することができます。
        エンタープライズに合わせた高可用性とアクティブ/アクティブ クラスタリングにより、DevOps パイプライン全体のダウンタイムをゼロにします。
        即時利用可能なネイティブとエコシステムとのインテグレーションにより、お使いの DevOps 環境をコントロールします。
        成長に合わせて拡張する、オンプレミス、クラウド、マルチクラウド、ハイブリッドのいずれのデプロイも選択できるエンタープライズ対応します。

        ■ エクセルソフト株式会社について
        エクセルソフト株式会社(東京都港区 代表取締役 神田聡 TEL 03-5440-7875)は、グローバル ソフトウェア ディストリビューターとして、ソフトウェア開発ツールを中心に世界中の優れたソフトウェアを日本、アジアを含むグローバルに販売しています。

        コンパイラー、テスト自動化、Office ファイル互換 API ライブラリー、PDF 帳票、API プラットフォーム、デバイスドライバー開発、アプリケーション開発コンポーネント、モバイルアプリ開発、ヘルプ作成、セキュリティ ソフトウェア、ネットワーク監視、DevOps、クラウド サービスなど、IT 環境を支える時代のニーズに応じたソフトウェア製品とサービスを提供しています。ソフトウェアの日本語および他言語へのローカライズ業務も承っています。

        本コーナーの内容に関するお問い合わせ、または掲載についてのお問い合わせは株式会社 PR TIMES ()までご連絡ください。製品、サービスなどに関するお問い合わせは、それぞれの発表企業・団体にご連絡ください。

        関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる