マドジャスに学ぶ仕事に通じる合コン術2017.01.11149グローバルで活躍するビジネスパーソンならだれでも知っている「PwC」ってどんな会社なの?2017.01.1065静岡県の恋愛成就スポット「寸又峡」にある夢の吊り橋の上で、恋愛ソングを歌ってみた。Edison記事一覧スマホのお天気アプリを使わずにAPIからお天気情報を見るちゃちゃまるどうもこんにちは、ちゃちゃまる(@chachmaru)です。先日大学の学部が決定しました。僕は毎日家を出る前に使っています。なんとなーく天気を知りたいだけなのに、いちいちスマホを解除してアプリのアイコン探して起動して......ってめちゃくちゃめんどくさいです。この作業をどうにか自動化したいんですよ。そこで考えたのは、家の玄関にLEDを置いて、晴れならオレンジ色、雨なら青色に光らすこと。そのようなことができるか、上司ののびすけさんに聞いてみました。「それ、めちゃくちゃ簡単だよ。EdisonでLEDを制御すればいいじゃん。わかる?」......ごめんなさい分からないです。EdisonでLEDを制御すればいいじゃん。わかる?」いろいろ英単語があって意味わかんないですよね。のびすけさんが言ってた意味不明の単語を一個ずつ調べてみました。Node.jsNode.jsとは、のびすけさん曰く「アツいJavaScript」らしいです。ノンブロッキングI/Oとかイベントループとかいろいろ特徴はあるらしいのですが、初心者には少しハードル高めなので今は無視します。(詳細はのびすけさんの記事にあるそうです!)ちなみにJavaScriptとは、いろいろ動いたりする動的なウェブサイト構築に使われるプログラミング言語です。プログラミング初心者でもわかりやすく、上級者にとっても便利なモノらしいです。わからない方は別になんとなーく理解しておけば良いと思います。Interface」の頭文字なのですが、なんとこの「API」を使うと、別の人が作ったモノや公開されているモノを再利用することができるらしいです。エンジニアの方と話すとき「APIから情報を取ってきて......」っていうフレーズをよく聞きます。確かに、例えば何かアプリを作ろうとするとき、全ての機能を一から作ろうとすると膨大な時間がかかってしまいますよね。誰かが作ったモノを使えるなんて、便利すぎます。Things)という言葉が流行りだしました。直訳すると「モノのインターネット」。これはあらゆるモノをインターネットに繋げて、さらに効率化しよう!という考えです。鍵をIoT化して、スマホを持ってドアに近づくと自動で開くとか、いくつかのIoTをリンクさせて、ボタンを押すとテレビとエアコンとコーヒーメーカーの電源が同時に付くようにするとか、可能性は無限大です。Edisonの登場です。Edisonを使えば初心者でもIoTデバイスを簡単に開発できます。EdisonはWi-FiやBluetoothなども標準搭載されていて、素早く動くものを作れます。Edisonの利用者にはデザイナーやアーティストなどエンジニアリングに特化していない方たちも多く、素早くIoT製品のプロトタイプを作れるのが人気の理由らしいです。これで初心者エンジニアの僕も、なんとかお天気LEDを作れそうです。それでは早速、作ってみましょう!お天気LEDを作ろう:APIから情報を取ってくる今回はAPIから今日の天気情報を取得して、それを文字としてパソコンの画面に表示させるところまでやりたいと思います。友達にドヤ顔で言いたくなりますね。セットアップ用意するものはNode.jsがインストールされたパソコンなんらかのテキストエディタインターネット環境だけです。OSやUNIXユーザーを想定しています。Node.jsがパソコンに入っていない方は、のびすけさんの記事を見ながらインストールしてください。Terminalというハッカーみたいなアプリを使いますが、あまり怖がらず気楽に行きましょう!書いてみる今から作るのは、実行するとTerminalに現在の天気情報を出力するプログラムです。テキストエディタを立ち上げて、weather.jsという名前でデスクトップに保存してください。})});上書き保存して、エディタを閉じる。Terminal.appを開きます。こんな画面が出てくるかと思います。これはコマンドラインインターフェース(CLI)といって、キーボードだけでパソコンを操作する方法です。ちなみに、マウスとキーボードで操作することはグラフィカルユーザーインターフェース(GUI)といいます。次は実際に入力します。いってもコピペでも大丈夫です。Desktopと入れてエンターキーを押します。このコードは、デスクトップに移動するよう命令するコマンドです。詳しくは解説しませんが、デスクトップに保存されているファイルをいじられる状態にある、と考えておけばOKです。ここで、ls(小文字のLとS)と入力してみてください。こんな画面になるはずです。デスクトップに他のファイルがある場合はそれらも表示されますが、その中にweather.jsがあれば大丈夫です。weather.jsと入れて、エンターを押してみてください。ファイル名.jsと入れることで、ファイル名.jsというファイルをNode.jsで実行するとイメージ程度に覚えておいてください。なんとなーく制作した流れを紹介します本記事ではEdisonを動かすことが目的なので、JavaScriptの基本的な概念や記法などはあまり細かく解説しません。このページにアクセスして、まずはAPIから返ってくるJSONデータサンプルを見て構造を理解します。今回表示させたいのは、JSONオブジェクトの中のforecasts配列の中の0(今日)というオブジェクトの中のtelopです。JSONオブジェクトはテキストフォーマットの一種で、いろいろなデータを文字列で表現することができます。この文字列をJavaScriptを使ってどの情報がほしいか解釈するわけです。GETリクエストを送るGETリクエストは、Webページなどからデータを取得するときに送るものです。今回はお天気情報を取得したいため、GETリクエストを使います。require('http');一行目にある上記は、HTTPサーバやクライアントを使用する際に必要な手順です。読み飛ばしちゃって大丈夫です。'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010';次に、アクセスしたいURLをurlという変数に入れます。実行内容をここに書く});その後http.getメソッドを使います。})これがhttp.getメソッド内の内容です。'';まず、bodyという変数を作ります。ここに送られてきた文字列を入れます。res.setEncoding('utf8');送られてくるJSONファイルのエンコーディングはUTF-8なので、上記のようにします。*callback*);res.onメソッドはイベントを表しています。これは、データが読み込まれた時にcallbackという関数が実行されます。});ここでいうcallback関数は上記の部分、つまりAPIからデータが送られてくるたびにbodyにそのdataを書き込んでいくということです。*callback*);データの読み込みが終了すると呼び出されます。})ここでは、データの読み込み終了時にJSONオブジェクトの中のforecasts配列の中の0(今日)というオブジェクトの中のtelopを表示させています。これで完成です!おわりに今回はお天気APIから今日の天気情報を取ってきてターミナルに表示するところまでやりました。Edisonを使ってAPIから取得した情報によってLEDの色を変える記事を書きたいと思います。LIGへの自由なメッセージお待ちしています頂いたご意見への回答は行っておりません。