2019の14日目の記事です。Searchを動かせるアプリにしたいと考えました。Searchは機械学習レスな類似画像検索エンジンであり、PaaSとして利用できるのですが、検索結果をjson形式で返してくれるだけなので、人間が解読するためにはCSV形式に整形したり、jsonを元に画像を表示させる必要がありました。Notebookでした。Notebookを使い、IPythonやipywidgetsとも出会い、そのGUIベースでインタラクティブにPythonを実行できる機能に驚き、そして時に苦戦しながら、ハンズオンを作ってきました。今回は、そのコンテンツの中で特に工夫したり、自信が楽しめた話をまとめます。Searchで画像検索をする際、画像をリクエストボディとして渡す必要があります。Notebookにアップロードできるフォームを作りました。1024px以内である条件があります。そのため、アップロードされた任意の画像をリサイズする機能を作りました。Searchの精度を上げるために、画像をトリミングしたいこともあります。そのため、アップロードされてリサイズされた画像をトリミングするフォームを作りました。Searchには登録済みの数値属性や文字列属性を元に、検索条件を付与して検索ができます。そのため、検索条件を選択できるプルダウンのフォームを作りました。Searchは検索結果として画像ファイル名を返します。OSSというストレージサービスに画像を格納しています。そのため、画像ファイル名を元にOSSに格納してある画像に対して、有効期限付き署名付きURLを発行し、そのURLをHTMLで描画する機能を作りました。Notebookにアップロードしてリサイズするfileuploadというライブラリを使いました。実行するとボタンが表示され、画像を1枚アップロードできます。Pillowというライブラリを使用し、画像をリサイズしました。画像をトリミングするipywidgetsというライブラリを使い、数値つまみを4個作成しました。それぞれのつまみで指定された数値を元に、先程のPillowで画像をトリミングしました。display(cropped_image)実行結果プルダウンを作る文字列プルダウンipywidgetsのInteractというライブラリを使い、文字列を選択できるプルダウンを作成しました。数値つまみipywidgetsのIntRangeSliderという関数で2方向で調節できるつまみを作成しました。value=[0,5000]));実行結果HTMLベースで画像を表示するIPythonのdisplayというライブラリを使い、HTMLを描画しました。Notebook上で機械学習に使用されるライブラリ各種を使用することにより、機械学習のような研究要素のある使い方ができました。Searchのレスポンスを見ながら、どのような画像を登録・検索すれば意図した検索結果が出てくるのかを検証する過程が出てきます。Notebookの使用をお勧めします。upLoginユーザーは見つかりませんでした。