お忙しい中、セッキーの変身をサポートしていただきまして、ありがとうございます!店長さん、開店中にも関わらず、撮影にご協力いただきまして、まことにありがとうございます。情報が出回っていますが、もうそれは過去のお話になったのではないでしょうか。さんでお買い物をするという選択肢ができたからです。楽しんではいかがでしょうか。PARCOさんには、事前にアポイントメントをいただいた上で訪問しています。PARCO内は撮影禁止です。今回の取材の際には、特別に許可をいただいた上で撮影しております。ここがいい!」を予定しています。:parcojunredvoyagegroup_tech2013年10月15日16:47カテゴリtoolネタHRForecastでサービスの数値を見える化してディレクターに好評。GROUPの水越(@Akiyah)です。エンジニアをしています。最近、同僚のコテツさんが社内にHRForecastを導入してくれました。HRForecastとは数値を毎日/毎時で登録するとブラウザ上でわかりやすいグラフにしてくれるツールです。blog.nomadscafe.jpディレクターの方が必要としている数値を、われわれエンジニアが出して渡すという運用は今までもいろいろな方法でやっていました。管理画面を作ったり、デイリーバッチで数値の入ったメールをメーリングリストに送ったり、エクセルファイルやCSVファイル、グラフ画像を更新してファイルサーバーに置いておくといったやり方です。HRForecastを使うと数値の更新もデータの表示も楽になるので、できるところから順次HRForecastに移しているところです。データを記録するのはhttpでPOSTするだけなので簡単。データ解析環境「R」ではこんな感じで、APIにしたがってsimplePostToHostを叩くだけです。このスクリプトを1回動かすとすると、グラフに当日と前日の数値がプロットされます。過去のデータは保存してくれるので、最新のデータのみ更新すればよい。過去のデータは保存されるので、過去のデータを計算しなおす必要は無く、毎日最新のデータを更新するだけでよいです。もの過去分を含めて計算しなおしていることが多いので、最新のデータのみ更新すれば良いのはとても助かります。HRForecastを使い始めの時は、上記のスクリプトを必要な過去の日数分繰り返すようなスクリプトを書いて1回だけ過去データをまとめて入れておくと良いでしょう。過去のデータを上書きすることもできるので、未確定のデータを入れておくこともできる。Users:1日にサービスを利用したユーザー数)を1時間おきに更新したい、と言うような場合、上記のスクリプトを1日1回では無く、毎時実行するだけで毎時更新を行うことができます。DAUの場合、ある日のDAUが確定するのは次の日になってからになりますが、そういう場合には前日と当日のDAUを更新するようなスクリプトを書いておきます。すれば当日分は1時間おきに更新され、前日分は日が変わって確定した時に(1時間以内に)確定した数値で更新されます。シンプル上で書いたようにPOSTするAPIはシンプルです。データベースのテーブルもdata(個々の数値)、metrics(グラフ)、complex(複合グラフ)の三つだけで、その中身も一度HRForecastを使った人なら何となくわかるくらいシンプルです。テーブルの構成がシンプルなので、ブラウザ上では面倒なこともSQLで一気に操作することが簡単にできます。うっかりしてグラフをたくさん作ってしまった時などはよくSQLを使って消しています。ちなみに、HRForecastではブラウザ上でグラフを書くのにdygraphsというJavaScriptライブラリが使用されています。HRForecastのviewの部分はdygraphsにCSV形式のデータを渡しているだけなので、viewの部分もシンプルに作られています。CSVファイルとしてダウンロードできる。Excelで加工したい場合も多いので、描画されたグラフではなく元のデータが得られるのはうれしいようです。グラフを拡大、縮小して見たいところに注目することができる。データはたくさん(例えば何年分も)入れておいても、表示するときに最新の1ヶ月分などを簡単に見られるのが好評です。URLさえ知っていれば見ることができる。今までの仕組みだとメーリングリストに入らないと自分にはメールが届かなかったり、権限をもらわないと管理画面を見られなかったりするので、それに比べるととても便利です。(もちろん社内のLANからしか見られないようにはしています)アンパンマンと言うわけで、社内で好評なHRForecastですが、もっと仲良くなるためにアンパンマンを書いてみました。私にとってアンパンマンはHelloWorldなのです。以前作ったアンパンマン方程式を使って、横軸を日付(2013/1/1~2013/12/31)、縦軸を整数(-200~200)でcsvファイルにしました。そのcsvファイルの数値をHRForecastのグラフとして登録します。HRForecastの(複合グラフではないほうの)グラフには1つの線しかかけないので、アンパンマンの顔を6つのパーツに分けて登録しました。顔の輪郭(上)顔の輪郭(下)目はなとほっぺまゆげくちこれらのグラフをHRForecast上で複合グラフにして、アンパンマンの完成です!↑これはHRForecastに貼り付けたもののスクリーンショットですが、HRForecastで実際に見るときはインタラクティブに操作ができるので、その雰囲気を感じられるようにdygraphを使って拡大縮小できる状態にしたグラフを下に貼っておきます。(canvasが使えるブラウザのみ)みなさまもHRForecastとアンパンマンとお友達になれましたでしょうか。18:30)はからずもこの記事を書き終えて公開してからやなせたかしさんの訃報を知りました。アンパンマンは私の息子と娘、そして私にとってのヒーローでした。ご冥福をお祈りいたします。GROUP新卒エンジニアの井手上です!今回の記事はSkypeテキストチャットのためのコマンドラインインターフェースを作ろうという内容です。皆さんは仕事でのコミュニケーションにどのようなツールを利用していますか?事業部にもよりますが、私の所属するadingoプラットフォーム本部ではSkypeインスタントメッセージ(テキストチャット)を利用しています。Skypeの良い点は、やはり多くのプラットフォームで利用できるところです。WindowsやMac、Linux等のOSにとらわれずに誰でもチャットに参加できるのでエンジニアだけではなく、業務に関わる全員と効率的なやり取りが可能です。Skypeを活用するようになって出てきた問題が2点あります。黒い画面が恋しい私のSkypeのグループを見てみると、業務関係のグループであったり、エンジニアがプログラミングの話をするグループであったり、同期が集まってワイワイするグループであったりと、小さなものから大きなものまで多くのグループがあります。グループが多くなると、あるグループで会話が進んでいる裏で、別のグループでも進んでいるという状況が多くなり、カーソルでグループをポチポチ選択してから切り替える必要があります。このような場合はSkypeの画面を並べてチャットの一覧性を高めたくなりますね。(2)については好みによりますが、エンジニアの中には端末とかターミナルなどと呼ばれる黒くて地味な画面を愛してやまず、一瞬でも長く黒い画面と付き合いたい方が一定数います(自分調べ)。確かに操作がキーボードのみで完結しますし、zshのようなシェルを使用すると単語レベルでのカーソル移動ができたりと、Skypeのチャット入力画面よりも編集能力は高いかもしれませんね。長くなりましたが、結局下の図のようにテキストチャットを利用したいわけです。このさいきょうのSkypeを実現するために以下のことができる必要があります。コマンドラインからチャットを読んだり発言できたりする画面を分割できる(2)の「画面を分割できる」ですが、iTermやscreenの画面分割機能を使用すれば実現できそうです。(1)についてはこれといったものが見つからないのでオレオレSkypeコマンドラインインターフェース(CLI)をサクッと作っちゃいましょう。eventでアプリケーションと通信CLIを作るためのプログラミング言語は何であれ、Skypeアプリケーションにコマンドを送信してチャットの情報を取得したり発言する方法が必要です。eventを利用するとプロセス間通信でアプリケーションと対話できます。eventを利用した例です。RECENTCHATS"に注目してください。この例ではSkypeアプリケーションに"最近のチャットを探してください"というコマンドを送信しています。すると以下のようなメッセージが帰ってきます。#user2/user1;bc0710cb4a32bdc2CHATS以降、カンマで区切られた文字列は最近のチャットのIDを表します。あるチャットでの会話を取得したい場合は、"IDがXXのチャットの会話をください"とSkypeアプリケーションにまたコマンドを送信します。他にもいろいろなコマンドが用意されており、リファレンスが公開されています。http://dev.skype.com/desktop-api-reference発言したりメッセージを取得するだけでなく、電話もできるようですね。CLIをGitHubに公開しています。skype_chat-0.0.1.gemインストールするとskyというコマンドが利用できます。listと実行するとチャットの一覧が表示されます。トピック名があればトピック名が表示され、チャットに参加しているユーザーも最大3名まで表示しています。最初に"e4"や"86"と表示されている文字はチャットのIDになり、他のコマンドで利用できます。e4とチャットIDを渡すと、会話の内容が表示されます。e4とすると、新しいメッセージが投稿されたらそれを表示し続けます。こんにちは〜sendコマンドで発言を投稿できます。応用する会話を表示しているだけなのでgrepでフィルタリングしたりすることもできます。botを作ってみるのも良いかもしれませんね。"`date`"ぼくがかんがえたさいきょうのSkypeを実現するため、画面分割にはtmuxを使用しています。使用するとコマンド一発で設定しておいた画面構成にしてくれるので便利です。ここまで読んでいただきありがとうございました。