dejerine’s blog

千葉のとある街に住むサーファーの週末日記。「海の記録」や「食」「アメリカで生活していた頃の思い出」などを気ままに書いています。

フリー画像のAPI 〜pixabay API〜を使ってみる(まだ使っていない)

フリー画像のAPIってどんなのがあるのかな〜と思ってなんとなくウエブサーフィンしていたら、pixabay

https://pixabay.com/

というのがあるということを知ったので、そのAPIを試しに使ってみようと思ったけどまだ使っていないはなし。

pixabay
画像はpixabayより

pixabayの概要

pixabay(ピクサベイ)というのは、無料画像サイトで、画像だけではなくて、フリーの動画(ショートムービー)もある。

フリーというのは、著作権フリーのこと。

つまり自由に使うことができる素材が置いてあるサイト。

ただし、中にはpixabayのスポンサー(iStock)の画像が含まれていたり、画像の中に商標登録されているようなものが含まれていたりすると、著作権が生じる可能性も出てくるので、素材の取捨選択もある程度必要かと思われる。

公式ページのQ&Aを見てみると、素材をFacebookなどのSNSで使うこともOKとある。

SNS
画像はpixabayより
pixabay APIの概要

サービス全体の説明は日本語だが、APIの説明は英語。
https://pixabay.com/ja/service/about/api/

簡単にここのページを要約すると、

  1. 200万以上の素材にアクセス可能(2020年7月現在)
  2. 素材の種類は写真、イラスト(+ベクター画像)、ビデオ。
  3. リクエストは無制限(5000件/時間という時間制限はある)。
  4. セットアップは簡単。
  5. AndroidiOSの公式アプリの中でも使われている。1895のdeveloperがPixabay APIを使っているとのこと。
  6. 利用するときは必ずpixabayの素材であることを明記すること。それから、その際は、pixabayのロゴを使ってもいいですよ。
  7. APIを使った大量ダウンロードは禁止。クエリに対する一時的なURLsが生成されるので、そこから素材をダウンロードして使うように。

とのこと。

pixabay APIをどうやって使うか

無料だが、まずは登録が必要(まだ登録していない)。

画像(写真とイラスト)は、httpsプロトコルで、

pixabay.com/api/

動画は、

pixabay.com/api/videos/

にGETをリクエストする。

この際、上のURLの末尾にパラメータ(引数)をつける。

画像のリクエストにつけるパラメータは以下の通り(詳細は公式ページを参照)。

key (required), q, lang, id, image_type, orientation, category, min_width, min_height, colors, editors_choice, safesearch, order, page, per_page, callback, pretty

必須のパラメータは、「key」。これは、サービスに登録すると得られるAPI key。

qは検索文字。花を探したければ、「flower」を指定。and検索は「+」

あとは、langでjaを指定すると日本語で検索した結果を得ることもできる。

image_typeで写真(photo)かイラスト(illustration)かベクター画像(vector)かを選ぶ。

categoryでカテゴリーを指定することができる。指定できる値は、backgrounds, fashion, nature, science, education, feelings, health, people, religion, places, animals, industry, computer, food, sports, transportation, travel, buildings, business, music。

リクエストの例
https://pixabay.com/api/?key={KEY}&q=yellow+flowers&image_type=photo

{KEY}にAPI keyを入れる。これで、黄色、花、に一致する写真を検索できる。

videoもほぼ同じような感じでリクエストできる。

pixabay APIを使うと何が戻ってくるのか

画像ではなく、JSON形式のテキストがレスポンスとして返される。
Headerにリクエストのリミット(5000リクエスト/時間)までどれくらいかなどの情報が含まれる。

”hits”キーの値が検索結果で、リストの形で含まれている。

個々の検索結果としていろんな形式の画像の一時URLが帰ってくるので、必要なサイズの画像をリクエストGETでダウンロードすれば後は自由に使える。

”userImageURL”は画像の直リンクだが、これを直接使うあるいは改変してオリジナル画像に直接アクセスすることは避けるべし。

Openweathermapなどの気象情報系のAPI, はてなブログAPI, はてなフォトライフAPIと合わせて使えば、その日の天気などに合わせて画像を自動ではてなブログに貼り付けるボット(アプリ?)が簡単にできそう。

市ヶ谷〜九段下〜神保町〜小川町をただただ歩く

 しばらく前の話になるけど、2月末のある日、iPhoneにインストールされている「ヘルスケア」アプリで勝手に歩数が記録されていることに気がついた。なんと、iPhoneを買った日からのデータが全て記録されてグラフで表示されている。何月何日にどれくらい歩いたかが一目瞭然でわかるグラフ。とてもわかりやすい。それまでは、歩数など気にもかけていなかったけど、ヘルスケアアプリが自動的に歩数を計測しているということに一旦気がついてしまうと、毎日の歩数が気になってしょうがない。元々通勤で比較的歩いてはいたのだが、実際に何歩歩いているかということについては無知であり、グラフ化された歩数はとても新鮮だったということもあるのかもしれない。とにかく毎日が無駄に「歩数、歩数、歩数」になった。

 そんなわけで、万歩計生活が始まって3ヶ月。1日の平均歩数は1万5000歩を超えるようになった。歩くときは必ずスマホを携帯。そんな生活。緊急事態宣言発令中は買い物などもできるだけ控える生活で、運動不足になりがちだったが、このライフスタイルの変化の陰で減量にも成功。一時帰休中も感染拡大に寄与しなければ良いだろうということで、人ごみを避けて歩いた。新型コロナが猛威を奮う中ウォーキングをしていたのは、決して、「あまのじゃく」とか、「怠け者の節句働き」というわけではないというのはここだけの話。

 この3ヶ月培った徒歩能力のおかげで、長距離の散歩が可能に、いや、むしろ歩くことが快感になっている。緊急事態宣言が解かれたので、先週の土曜日、少し時間ができたこともあり、(堂々と)曙橋駅から馬喰横山駅まで歩いてみた。途中から思いたって写真を撮りながら歩いたので、その記録を忘れないうちに残しておきたいと思い、久々にリアルワールドをブログを書くことにした。何の変哲もない、曇り空の平凡な写真ばっかりだけど、後々、こういう「盛っていない」写真の方が見ていて趣深かったりすると思う主観に基づいてあえて厳選してません。

 歩き始めは曙橋駅だけど写真を撮り始めたのは九段坂上から。靖国神社があるところ。丁度鳥居があって、新型コロナに打ち勝とうみたいなことが書かれた横断幕が貼られていた。新型コロナ、今後どうなることか。早くワクチンができるといいけど。

f:id:dejerine:20200614020727j:image
f:id:dejerine:20200614020716j:image
f:id:dejerine:20200614020721j:image

交差点には「sagafred」という名の新しいエスプレッソカフェが。まだオープンしていなかったが近日中に開きそう。

 

f:id:dejerine:20200614021106j:image
f:id:dejerine:20200614021101j:image
f:id:dejerine:20200614021056j:image

ここから坂を下り神保町方面へと続く。途中品川弥次郎の銅像や常灯篭などがある。常灯篭は明治4年にできた灯篭で品川沖を行き来する船の灯台としても機能したらしい。九段坂はかつては急な坂だったらしいけど関東大震災後に今のような緩やかな坂に改修されたみたい。

 

f:id:dejerine:20200614021542j:image
f:id:dejerine:20200614021545j:image

f:id:dejerine:20200614025451j:image

常灯篭から少し下りると皇居の堀と昭和館がある。坂の上から眺める堀は、蓮の葉が青々しく覆っていて初夏を感じさせる。昭和館の入り口には「あの日の昭和がここにある」。入ったことはないけど、戦時中の暮らしとかが展示されているのかな?外装からは中が想像できない綺麗にデザインされた立派な建物。別に深い意味はないのだけれど、ふと京極夏彦魍魎の匣にあった「箱は外側にしか存在価値がないのだ」という言葉を思い出した。

 

f:id:dejerine:20200614022758j:image
f:id:dejerine:20200614022806j:image
f:id:dejerine:20200614022801j:image

 

坂を下り切ると九段下交差点。内堀通りと交差し地下鉄の入り口がある。

 

f:id:dejerine:20200614022949j:image
f:id:dejerine:20200614022954j:image
f:id:dejerine:20200614022945j:image

 

少し歩くと川があって、その上を首都高速が走っている。橋の名前は「まないたばし」。

 

f:id:dejerine:20200614023130j:image
f:id:dejerine:20200614023127j:image
f:id:dejerine:20200614023119j:image
f:id:dejerine:20200614023123j:image
f:id:dejerine:20200614023133j:image

まないたばしから少し歩くと神保町。見慣れた風景。古本屋の町。

 

f:id:dejerine:20200614023318j:image
f:id:dejerine:20200614023326j:image
f:id:dejerine:20200614023331j:image
f:id:dejerine:20200614023322j:image

 

寄り道をしなければ、小川町まですぐにたどり着く。先々週は、この界隈の某サーフショップで半額のアルメリックのサーフボードを買った。

 

f:id:dejerine:20200614023905j:image
f:id:dejerine:20200614023917j:image
f:id:dejerine:20200614023913j:image
f:id:dejerine:20200614023920j:image
f:id:dejerine:20200614023909j:image

 

小川町から先はビルが連立する比較的ボアリングな街並みが続く。ここで初めて歩いている道が「靖国通り」という名前であることを知る。交差する道の名前は比較的すぐに見つけられのに、歩いている道の名前はなかなか見つからないもどかしさよ。

 

f:id:dejerine:20200614024053j:image
f:id:dejerine:20200614024108j:image
f:id:dejerine:20200614024049j:image
f:id:dejerine:20200614024057j:image
f:id:dejerine:20200614024100j:image
f:id:dejerine:20200614024103j:image
f:id:dejerine:20200614024112j:image

以上、距離にして6キロちょいの道のり。散歩は楽しい。ありがとうヘルスケアアプリ。

 

散歩後は自宅近くの銭湯で汗を流して帰宅。コロナ前だとそれほどでもなかったかもしれないけど、ちょっとした贅沢というか、幸せを感じた土曜の午後だった。やっぱり日常っていいな。

 

 

 

pythonanywhereを利用してFlaskでWebアプリを作ってみる

pythonを使い始めて半年。時間はかかるけど、localで意図するwebアプリを作れるようになってきた。Herokuを使ってwebアプリを立ち上げたりもしてみたが、無料サーバーとして使えそうなpythonanywhereというものを見つけた。コロナウイルスで不要不急な外出の自粛と外が雪だったので、pythonanywhereを利用してFlaskでWebアプリを作ってみることにした。

追記: urllib (pandasのread_html), requestsを使うと、無料版だとホワイトリストに含まれないサイトに対してはHTTP Error 403: Forbiddenになる。以下ホワイトリスト

https://www.pythonanywhere.com/whitelist/

これ以外のサイトをスクレイピングするような動作を含むアプリを作る場合は有料にする必要がありそう。
詳細はこちら
https://help.pythonanywhere.com/pages/403ForbiddenError


pythonanywhereの特徴

  • 無料のPython環境
  • webサイトを構築したりブラウザから直接コードできる
  • 有料プランは$5/月から
  • ウェブサーバーやLinuxマシンを維持しなくていい
  • セキュリティーパッチもインストールしなくてもいい
  • ウェブフレームワークとしてDjango, web2py, Flask, Bottleが使える

使い方

  • 図のような画面が表示されるので緑色の"Start running Python online in less than a minute!"をクリック

f:id:dejerine:20200329102011p:plain
セットアップ画面

  • "Create a Beginner account"をクリック

f:id:dejerine:20200329102310p:plain
2

  • 必要な情報(username, email, passwords)を入力する

f:id:dejerine:20200329102409p:plain
3

  • こんなポップアップが出てくるので一応"Next"を押してチェックしてみる


f:id:dejerine:20200329113049p:plain
4

コンソールにコマンドをタイプして結果がすぐに見られる、コンソールにはPython コンソールとBashコンソール(terminal)がある、Fileを作ったりするボタン、Web appsのボタン、Jupyter Notebooksを使うボタン、’Open Web tab’をクリックすることでWeb appsが作れる、有料サービスだとJupyter Notebooksが使える等の情報がツアー形式で説明される。後からでも確認できる(と思われる)ので読み飛ばしても大丈夫そう。



f:id:dejerine:20200329114552p:plain
5

  • ログインが完了するとこんな画面が出てくる。Warningが出ているが、登録したemailに送られてきた確認アドレスにアクセスすると消えた。
  • ウェブアプリを作るためにまず右下の"Open Web Tab"ボタンをクリック(上の写真の赤丸)する。

  • 左の青いボタンの"Add a new web app"をクリック

f:id:dejerine:20200329115242p:plain
6


  • appのドメインが自動で設定される。"Next"をクリック。


f:id:dejerine:20200329120656p:plain
7

  • どのフレームワークを使うかを選択する画面が出てくるのでFlaskを選択。"Next"をクリック。

f:id:dejerine:20200329120819p:plain
8


  • pythonのバージョンを選択する。とりあえず、3.8を選択。"Next"をクリック。

f:id:dejerine:20200329120943p:plain
9

  • こんな画面が出てくるので、"Next"をクリック。

f:id:dejerine:20200329121249p:plain
10

  • リンクをクリックするとアプリが見られる。最初は下のような画面が出てくる*1

f:id:dejerine:20200329191027p:plain
11

  • 最初の設定だと暗号化されない設定になっている

f:id:dejerine:20200329121557p:plain
12

  • 画面を下にスクロールして"Security"というところでSSL化する。httpをhttps設定にする。

f:id:dejerine:20200329192407p:plain
13

これでWebアプリのセットアップは完了。

実装

  • Webアプリの'/'で表示される文字を書き換えてみる。まずはflask_app.pyファイルを書き換えるために、以下の写真のうな流れでファイルにアクセスする。

f:id:dejerine:20200329193528p:plain
14

f:id:dejerine:20200329193543p:plain
15

ファイルを開くとコードが出てくるので、return 'XXXXXX'という部分を適当に書き換えて、ファイルを保存し、リロードすればホーム画面が書き換わる。

あとは自分の好みで色々と作り上げれば簡単にWebアプリが作れる。これは便利。

Flaskの使い方の本
英語

日本語

*1:ちなみに、無料プランだと3ヶ月に一度は下のオレンジボタンをさなければアプリが消えてしまうので注意が必要。

3/20 東浪見

南西のち北西のち南西の風が強く吹く予報。

昨夜は雨と風がひどかったが、朝には雨も止んで行楽日和な空。

午後の方が風が弱まって風向きも良くなりそうだったので、ソラハナでゆっくりと朝食をとってから海へ向かう。

つくねバーガーとタンドリーチキンスープ。

タンドリーチキンスープはいい塩梅でスパイスが効いていている。

コーヒーは一杯まで無料。

一宮で波チェック。

北西の風がとても強い。

板が降りなさそう。

しばらく待って南西に振れて来た時点で東浪見に移動。

まとまりのないガチャガチャした波で乗りにくいが、たまに乗るといい波も混在。

人も少なく遊べた。

昼はかさやで三陸ラーメン。

出汁がいい感じ。

夕方に一宮で入って帰りは都賀の緑の湯で身体を温めて帰宅。

久々の1日2ラウンドコース。まだまだ若い!

3/15 一宮

今朝は少し遅めの出発。

昨日は雪が降って、そのせいで道が濡れていた。

10時頃から波乗り。

アウトのセットは頭くらい。

インサイドはカレントが強くてよく流された。

砂がテトラ脇に溜まって地形がまた悪くなりつつあるような。

メインがクローズしていたので人は少なめ。

左側はチェックしなかったけど、人が多そうだった。

海上がりに白子のイタリアンによってパスタランチ。

新玉のスープ。

玉ねぎが半生で香りが生きていて美味しかった。

もちろんメインのパスタ(ペスカトーレ)も美味しかった。

3/8日曜日 雨

千葉北。ソラハナでパンを買って一宮で昼前から。胸前後。雨が降っていて着替えるのが難儀だったが人も少なくそれなりに遊べた。風は北西風で雨が降っていたこともあり冷たく感じた。ノーブーツノーグローブの人も何人か見かけた。

高速道路は意外と交通量があったが3時前で渋滞はなかった。

かにクリームコロッケを久しぶりに食べた。

夜はカレー鍋。

三月第1週目の日曜日

チバキタキタへ。

最初オフショアで昼前には北風のサイド。

前半は腹前後のクリーンな波。

仲良くみんなで一斉テイクオフ。

人多めで前乗り多発してて楽しくなさそうだったので隅っこでちまちまと遊んだ。

河津桜が満開で綺麗だった。

穏やかな陽気でテトラの上でウミウが羽を広げて身体を温めていた。


今年は鳥が多い?

昼はとんかつ。

夕方、散歩がてら新しくできたベルクへ。

ウイスキーの品揃えはイマイチ&高い値段設定だったので、近所の酒屋でハイボール用にリザーブを買って帰った。