Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【Python】ディスクの使用率や空き容量を確認

はじめに

 Pythonを用いてプログラムを作成し、そのプログラムをサーバーやエッジデバイスなどで動作させるケースがあると思います。そのプログラムがローカルディスクやマウントした共有フォルダにcsv, json形式など何かしらのデータをファイルを書き出すことがある場合、安定的なシステム運用のためにディスクフルにならないように監視をしておく必要があります。

 そこで、本記事ではPythonでディスクの使用率や空き容量を確認する方法を簡単に紹介します。

ハードウェアの様々な情報を取得したい場合には、以下の記事内容をご覧ください。

chantastu.hatenablog.com

1. 必要なPythonライブラリのインストール

ディスクの容量情報を取得するために、psutilをインストールします。

 

2. ディスク容量情報の取得

 それでは、ディスクを指定して容量情報を取得したいと思います。下記のプログラムを実行することで、ディスクの容量情報とdisk_data.persentでディスク使用率を取得することができます。

 上記プログラムを実行した結果が以下です。ディスクの容量情報とディスクの使用率を取得することができました。ディスクの容量情報disk_dataの中には、容量を示すtotal、使用容量を示すused、空き容量を示すfree、使用率を示すpercentがあります。ここでの容量の単位はB(バイト)です。使用率の情報はここから取得しています。

 

3. 使用容量、空き容量の表示内容を変更

 上記に示した通り、ディスクの容量情報を取得できるようになりましたが、場合によっては使用容量、空き容量にも着目したい時もあると思います。しかしながら、269427478528、12889841664、242776965120のように桁数が大きくどのくらいの容量かは瞬時に理解するのが難しいと思います。

 そこで、桁数に応じてKB、MB、GBの表示に変換したいと思います。それを実現したプログラムが下記です。

 実行結果を下記に示します。ご覧の通り桁数に応じて表示内容が変わってわかりやすくなったかと思います。

 

おわりに

 本記事ではPythonでディスクの使用率や空き容量を確認する方法を簡単に紹介しました。システムを安定的に運用させていく際にはディスクフルになることは避けたいので、ぜひ本内容が役に立てば幸いです。

【第2回】簡単に実践:Speech Recgnitionを用いた音声認識

はじめに

本記事では、Speech Recgnitionを用いた音声認識について紹介します。特に、「音声データ(.wav)から音声認識を行う方法」と「マイクからの音声データから音声認識を行う方法」を紹介します。

 

 

1. Speech RecgnitionのGithubリポジトリ

Speech RecgnitionのGithubリポジトリは下記です。exampleフォルダにサンプルコードが格納されています。

github.com

 

2. 動作環境の構築

それでは環境構築をしていきます。本記事ではWindows 11でpython3.8の環境で構築を進めていきます。仮想環境venvを起動して環境構築をします。pip installでは、マイクからの音声取得のためにpyaudioのインストールを行います。

 

3. 音声データ(.wav)から音声認識

まずは、音声データ(.wav)を用いて音声認識を実施します。音声データサンプルは下記ページの「CM原稿(せっけん)」を使用させていただきました。

pro-video.jp

こちらのmp3ファイルをwavファイルに変換して用います。下記のコードが音声データから音声認識を実施するコードです。

上記を実行すると「無添加シャボン玉石けん ならもう安心 天然の保湿成分が含まれるため 肌に潤いを与え 健やかに保ちます お肌のことでお悩みの方は是非一度無添加シャボン玉石けんをお試しください お求めは 0120-0055-950」の文字列を取得することができました。

 

4. マイクからの音声データから音声認識

次に、マイクからの音声で音声認識を行います。下記のコードを実行して、「Listening Start!」と表示されたらPCのマイクに向かって声を発してください。「Listening End!」と表示されるまでの音声で音声認識されます。

今回は「こんにちは よろしくお願いします。」と声を発してみました。その結果が以下です。ひとまず音声認識できているのが確認できました。

 

 

 

おわりに

本記事では、Speech Recgnitionを用いた音声認識について紹介しました。今回は音声データやマイクの音声から音声認識する方法を確認しました。これからますます進歩する技術と思いますので、リアルタイムに音声認識できることを期待しましょう!

YOLO-NASによる物体検出:動作環境の構築と推論デモ

はじめに

YOLO-NASが2023年5月にリリースされました。YOLO-NASは、比類のない精度と速度のパフォーマンスを備えた最先端のパフォーマンスを提供し、YOLOv5、YOLOv6、YOLOv7、YOLOv8 などの他のモデルを上回ると唱っています。

引用:https://github.com/Deci-AI/super-gradients/tree/master

YOLO-NASGIthubリポジトリは下記のリンクです。

github.com

 

本記事では、YOLO-NASによる物体検出をGoogle Colaboratoryで行うための動作環境の構築と推論デモを実施した方法を紹介します。

 

 

 

 

1. YOLO-NASGithubリポジトリ

YOLO-NASGIthubリポジトリは下記のリンクです。

github.com

 

2. Google Colaboratoryでの動作環境の構築と推論デモの方法一覧

以下がGoogle Colaboratoryでの動作環境の構築と推論デモの方法一覧です。

 

2.1 Google Colaboratoryでの動作環境の構築

まずはGoogle Driveのマイドライブに接続します。

次に、Git cloneでリポジトリスクリプトを取得し、必要なライブラリを取得します。

これでひとまず動作環境の構築は完了です。

 

2.2 学習済みモデルの取得

YOLO-NASの物体検出の学習済みモデルには、yolo_nas_s、yolo_nas_m、yolo_nas_lがあります。この中から選択します。以下のリンクから学習済みモデルを確認することができます。

github.com

学習済みモデルyolo_nas_s、yolo_nas_m、yolo_nas_lはCOCOデータセットで学習されているので、引数pretrained_weightsには"coco"を指定します。

 

2.3 画像に対する物体検出のデモ

それでは、画像に対する推論を行っていこうと思います。以下のコードでは以下のことをしています。

  1. まずモデルをGPUに転送しています。
  2. 推論対象画像のパスを指定(ここではYOLOXのGithubリポジトリにある画像を指定、ローカルの画像パスでもOK)
  3. 推論
  4. 推論結果画像の描画

 

推論結果として下図が得られます。バウンディングボックスが描画されているのが確認できると思います。

 

画像の保存には下記のコードを実行します。ここではGoogle Driveの/content/drive/MyDrive/super-gradients/resultに保存したいと思います。

 

2.4 動画に対する物体検出のデモ

次に、動画に対する推論を行っていこうと思います。以下のコードでは以下のことをしています。

  1. まずモデルをGPUに転送しています。
  2. 推論対象動画のパスを指定推論

 

動画の保存には下記のコマンドを実行します。下記の内容ですと/content/drive/MyDrive/super-gradientsのディレクトリにresult.mp4が保存されます。

 

下の動画が推論結果です。バウンディングボックスが描画されているのが確認できると思います。

youtu.be

 

おわりに

本記事では、YOLO-NASによる物体検出をGoogle Colaboratoryで行うための動作環境の構築と推論デモを実施した方法を紹介しました。気軽にGoogle Colaboratoryでできるようになっているのはありがたいですね。今後、YOLO-NASを深堀りしていこうと思います。

 

オススメ書籍

物体・画像認識と時系列データ処理入門

現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装

PyTorchで作る!深層学習モデル・AIアプリ開発入門

【folium】PolyLineで地図に線を描画:羽田空港線バスの経路を線で描画編

はじめに

過去の記事でfoliumを用いた地理データを地図上に可視化について、下記記事のように基礎的なことを紹介しました。

chantastu.hatenablog.com

本記事では、foliumを用いた地理データを地図上に可視化の内、PolyLineで地図に線を描画する方法を簡単に紹介します。

今回は事例として、羽田空港線バスの経路を線で描画してみたいと思います。

 

 

1. 羽田空港線バスの経路情報

羽田空港線バスの経路情報は、以下の国土数値情報ダウンロードサイトから取得いたしました。

nlftp.mlit.go.jp

今回は、以下のバスの経路のデータを使用いたします。

 

2. PolyLineで地図に線を描画

それでは、PolyLineで地図に線を描画したいと思います。本記事では、羽田空港線バスの経路を線で描画したいと思います。上記の3路線のデータをfolium.PolyLine()で描画します。引数には各地点のデータ、線分の太さweight、線の色color(HTMLカラーコード)を指定します。これで、線の描画が完了です。

以下のコードではさらにPolyLine に沿ってテキストを表示させています。

上記のコードを実行すると下図のような地図が作成されます。見てわかる通り、赤、青、緑色で各路線の経路がPolyLineで描画されているのが確認できます。また、各PolyLineに沿ってテキストも描画されているのも確認できます。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

【folium】ミニマップをメインマップに表示

はじめに

過去の記事でfoliumを用いた地理データを地図上に可視化について、下記記事のように基礎的なことを紹介しました。

chantastu.hatenablog.com

本記事では、ミニマップをメインマップに表示する方法について紹介します。

 

 

1. ミニマップの表示

それでは、ミニマップをメインマップに表示してみましょう。ここでは皇居を基準に地図を作成します。以下のコードのようにplugins.MiniMap()でミニマップを作成し、map.add_child(minimap)でメインマップに表示していきます。

上記のコードを実行すると、下図のような地図が作成されます。見てわかるようにメインマップの右下側にミニマップが表示されているのがわかると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

2. ミニマップの表示位置の変更

次に、ミニマップを左下側に表示させたいと思います。plugins.MiniMap()の引数positionに"bottomleft"を指定することで、ミニマップを左下側に表示させることができます。

上記のコードを実行すると、下図のような地図が作成されます。見てわかるようにメインマップの左下側にミニマップが表示されているのがわかると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

3. ミニマップのサイズの変更

次に、ミニマップのサイズの変更を実施してみたいと思います。plugins.MiniMap()の引数widthとheightに値を指定します。デフォルトはwidthとheightともに150pixelです。以下の例ではwidthとheightともに200pixelに指定しています。

上記のコードを実行すると、下図のような地図が作成されます。見てわかるようにミニマップのサイズが大きくなっているのがわかると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

4. メインマップのズームに対するミニマップズームのオフセットを指定

次に、メインマップのズームに対するミニマップズームのオフセットを指定していきたいと思います。メインマップのズームに対して、ミニマップのズームのオフセットはデフォルトで-5です。つまり、ミニマップはメインマップよりもズームが-5で表示されています。ここのオフセットを調整することができます。以下の例ではオフセットを-10に指定して表示させます。

上記のコードを実行すると、下図のような地図が作成されます。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

5. ミニマップのズームサイズを固定

次にミニマップのズームサイズを固定にしたいと思います。plugins.MiniMap()の引数zoom_level_fixedに固定したいミニマップのズームサイズを指定します。以下では10に指定しています。

上記のコードを実行すると、下図のような地図が作成されます。メインマップを拡大縮小してもミニマップ側は拡大縮小せず、固定されているのが確認できると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

6. ミニマップの中心位置を指定した緯度経度で固定

次に、ミニマップの中心位置を指定した緯度経度で固定したいと思います。plugins.MiniMap()の引数center_fixedに固定したいミニマップの中心緯度経度を指定します。以下の例では、皇居の緯度経度を指定しています。

上記のコードを実行すると、下図のような地図が作成されます。メインマップを左右に移動させてもミニマップ側は移動せず、固定されているのが確認できると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

7. ミニマップの最小化ボタンの表示

最後に、ミニマップの最小化ボタンを表示させたいと思います。plugins.MiniMap()の引数toggle_displayにTrueを指定することで、ミニマップの最小化ボタンを表示させることができます。

上記のコードを実行すると、下図のような地図が作成されます。ミニマップの右下部に縮小ボタンが表示されたのが確認できると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

【folium】地図マーカーのポップアップへのリンク貼付とポップアップサイズの変更

はじめに

過去の記事でfoliumを用いた地理データを地図上に可視化について、下記記事のように基礎的なことを紹介しました。

chantastu.hatenablog.com

本記事では、ポップアップへのURL貼付とポップアップサイズの変更について説明いたします。

 

 

1. ポップアップの表示

まずは基本的な部分として、地図上の任意の地点にマーカーをつけてポップアップを表示させたいと思います。皇居を基準に地図を作成して、皇居にデフォルトのマーカーをつけて、「皇居」を表示されるポップアップを表示させたいと思います。

上記のコードで下図のような地図が生成されます。マーカーをクリックするとポップアップが表示されてポップアップに「皇居」と表示されます。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

2. ポップアップにリンクを貼付

次に、ポップアップにハイパーリンクを貼ってみたいと思います。先程作成した地図のポップアップにハイパーリンクを設定したいと思います。以下がそのコードです。popupとして、HTMLで書くようにリンクを設定します。リンクには、宮内庁の皇居に関するページを設定します。

https://www.kunaicho.go.jp/about/shisetsu/kokyo/kokyo.html

上記のコードを実行すると下図のような地図が作成されます。マーカーをクリックするとポップアップが表示され、その中の文字をクリックするとリンク先の「皇居」のページに飛びます。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

3. ポップアップのサイズを変更

最後に、ポップアップのサイズを変更してみたいと思います。以下のGithubコードを基に実施してみました。

folium/Popups.ipynb at main · python-visualization/folium · GitHub

サイズ変更については、branca.element.IFrame()を用います。

python-visualization.github.io

下記にポップアップのサイズを変更する場合のポップアップ設定方法を示します。先程と同じようにpopupとしてHTMLで書くようにリンクを設定します。その次にbranca.element.IFrame()でポップアップのサイズを設定します。

上記のコードを実行すると下図のような地図が作成されます。マーカーをクリックするとポップアップが表示され、これまで上記に示したポップアップよりも大きいサイズとなっていることが確認できると思います。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

【folium】グループごとにマーカーを分けてマップに表示

はじめに

本記事では、foliumを用いた地理データを地図上に可視化のうち、グループごとにマーカーを分けてマップに表示する方法を簡単に表示します。

 

 

1. グループごとにマーカーを分けてマップに表示する方法

グループごとにマーカーを分けてマップに表示する際のPythonコードを以下に示します。 folium.FeatureGroup(name=***)を用いてグループを作成して、マップに描画します。ここでは東京都内の6つの駅を3つのグループに分けて表示させてみたいと思います。田町駅・品川駅をグループ1(赤色マーカー)、東京駅・秋葉原駅をグループ2(緑色マーカー)、新宿駅・渋谷駅をグループ3(青色マーカー)としてグループ分けしています。

上記コードを実行すると下図のような地図を得られます。右上にチェックボックスが表示されており、各チェックボックスを入れたり外したりすると、それに合わせてマーカーが表示さえたり、消えたりします。

Make this Notebook Trusted to load map: File -> Trust Notebook

 

2. 事例:牛丼チェーン大手3社の店舗のマップ

それでは実例として、牛丼チェーン大手3社のすき家吉野家松屋の東京都内の店舗マップを作成してみたいと思います。こちらで用意した店舗名、店舗住所、店舗情報が記載されたページのリンクが書き込まれたcsvファイルを用意して、すき家を青色マーカー、吉野家を赤色マーカー、松屋を緑色マーカーとして表示しています。

上記コードを実行すると下記リンク先のような地図を得られます。右上にチェックボックスが表示されており、各チェックボックスを入れたり外したりすると、それに合わせてマーカーが表示さえたり、消えたりします。

http://sukiyasuki.starfree.jp/3sya_data/data/gyudon_map_%E6%9D%B1%E4%BA%AC%E9%83%BD.html

 

他の都道府県のデータも下記のリンクから確認できます。

sukiyasuki.starfree.jp

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲