こんにちは,れいじです.
RaspberryPi Zeroを買ったまま持て余していたので,APIサーバにして遊んでみました.
※ちなみにデコってます.かわいい
raspberry pi zeroのケースがオタクだったからNot オタクにした pic.twitter.com/n4TaarKdAe
— れいじ (@reiji1020) 2017年12月17日
セットアップする
ラズパイゼロのセットアップに関してはインターネットに山のように情報があるので割愛します. あ,ラズパイゼロ買うならスターターキット買ったほうが絶対楽です.すでにケーブルなりSDカードなり持て余している方は別ですが,私みたいな初心者勢はスターターキット買ったほうがいいです.必要なコネクタとか全部揃ってるし.
今回はラズパイ上でNode.js+Expressを動かし,REST APIを作ります.使用するOSはRaspbian.
nodeのアップデートをする
使用するパッケージの都合上,すでにインストールされているnodeよりもバージョンをあげる必要があります.
ここではnodeのバージョン管理ツールn
を使用してみます.
# nのインストール $ npm install -g n # stable版にアップグレード $ n stable $ node -v 10.4.1 # 2018/06/20時点 #yarnのインストール $ npm install -g yarn
これで実行環境の準備は完了です.
RESTAPIを作る
プロジェクトを用意しています.README.mdに沿って準備すればだれでも使えるはず. 3時間くらいで作ったコードなのでものすごい雑です.多分近いうちに座標とかをリクエストパラメータとして受け付けられるようにします.
※ YORPのappIDについては公式ドキュメントをどうぞ
あ,nodeやexpressに関してはこの辺りをどうぞ.
ラズパイでgit clone
してyarn
するだけで必要なライブラリが入ってくれます.便利.
appIdを.envで環境変数に登録して,yarn start
します.このときラズパイ上で動作確認するときはhttp://localhost/weather/getWeather
にGetメソッドでリクエストを投げると今後1時間の降水予測が返ってきます.
<?xml version="1.0" encoding="UTF-8"?> <YDF xmlns="http://olp.yahooapis.jp/ydf/1.0" firstResultPosition="1" totalResultsAvailable="1" totalResultsReturned="1"> <ResultInfo> <Count>1</Count> <Total>1</Total> <Start>1</Start> <Status>200</Status> <Latency>0.002441</Latency> <Description></Description> <Copyright>(C) Yahoo Japan Corporation.</Copyright> </ResultInfo> <Feature> <Id>201806192350_0_35.663613</Id> <Name>地点(0,35.663613)の2018年06月19日 23時50分から60分間の天気情報</Name> <Geometry> <Type>point</Type> <Coordinates>0,35.663613</Coordinates> </Geometry> <Property> <WeatherAreaCode > <WeatherList> <Weather> <Type>observation</Type> <Date>201806192350</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200000</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200010</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200020</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200030</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200040</Date> <Rainfall > </Weather> <Weather> <Type>forecast</Type> <Date>201806200050</Date> <Rainfall > </Weather> </WeatherList> </Property> </Feature> </YDF>
さらにラズパイがネットワークに繋がっていれば,IPアドレスを使用してのアクセスも可能です.
この次はvvvvからラズパイにアクセスをして,インタラクティブなお天気デジタルサイネージを作ってみようかなーと思っています.
vvvvからHTTPGETを投げるのはめちゃくちゃ簡単なので,APIサーバを自作できれば色々な団体(企業)が公開しているデータを使用してリアルタイムなメディアアートを作ることができますね. ではでは~