読者です 読者をやめる 読者になる 読者になる

駄文型

プログラミングとか英語とかの話題を中心にした至極ちゃらんぽらんな日記です。

fluentdコンテナをDockerで立ててRailsのログをTreasureData by IDCFに保存する

参考

fluent.configの作成

<source>
  type forward
  bind 0.0.0.0
</source>

<match td.*.*>
  @type tdlog
  endpoint api.ybi.idcfcloud.net
  apikey $API_KEY
  auto_create_table
  use_ssl true
  buffer_type memory
  flush_interval 60s
</match>

例によってendpoint api.ybi.idcfcloud.netのところが重要で、これがないとログインエラーになる。

ローカルで動作確認

まずfluent-plugin-tdをインストール

$ gem install fluent-plugin-td

fluentd を起動。

$ fluentd -c fluent.config

JSONを投げる。TreasureDataにテーブルができていればOK。DBは事前につくっておく。td.<db_name>.<table_name>

$ echo '{"app":"command", "id":1, "message":"Hi!"}' | fluent-cat td.fluent.test

Docker

FROM fluent/fluentd
COPY fluent.conf /fluentd/etc/
RUN gem install fluent-plugin-td

copyはfluent/fluentdでやっているので必要ないはずだが、なぜか僕のビルド先(OpenShift)で動かなかったので明示的に入れた。docker runで起動すれば動く

$ docker build . -t $CONTAINER
$ docker run -p 24224:24224 $CONTAINER

Rails

fluent-loggerをインストール。

$ gem install fluent-logger

application_conraller.rb に下記を追加。requestの内容をログに含めることもできる。あとはRailsを起動してアクセスすればログが溜まっていく。はず。

Fluent::Logger::FluentLogger.open(nil, :host=>ENV['FLUENTD_SERVICE_HOST'], :port=>ENV['FLUENTD_SERVICE_PORT'])
before_action :fluentpost
def fluentpost
  Fluent::Logger.post("td.#{db_name}.#{table_name}",{
    path:   request.fullpath,
    method: request.request_method,
    user:   user_name,
    body:   request.body,
    time:   Time.current.to_s
  })
end

広告を非表示にする

日報を支える技術

日報について

日報書いてますか。僕の所属するチームは拠点が東京と福岡に分かれている上、各自やっていることが独立していていてるので、お互いが現在やっていることを把握するために必ず日報を書くことをルールとしている。1日の業務の中で困っていることや躓いたところを共有することで解決策が見つかることもある。

日報のデメリット

とはいえ良くない面もあって、「コストがかかる」というのが日報の一番のデメリットだと言える。一日の作業を振り返って、どんなことをやったか、どんな問題が出たか、それにどう対応したか、明日以降はどうするのか、などを考えるのは結構大変だと思う。それをチームメンバー全員がやるとなると合計でかなりの工数になると思う。かと言ってあまりに簡潔に書きすぎると作業の進捗状況をマネージャーが把握できないので、ミーティングの時間が長くなり、結局工数が嵩む。非同期に情報をやりとりできる日報のメリットが小さくなってしまう。

Slack分報との比較

昨今では(1年くらい前から?)Slack分報というものが流行っている。ひとりひとりがチャンネルを持っているので気軽に書き込めるという特徴がある。作業中にハマったことを書き込むことで、ほぼリアルタイムにアドバイスをもらえることもある。困ったり悩んではいるけど直接聞くほどではない問題をスムーズに解決できる。これは日報にはないメリットで、日報で同じような効果を得るのは1日に1回になってしまう。

一方でデメリットとしては、Slackのチャンネルが増えすぎてしまうとか情報量が多すぎて追えなくなってしまうとか、などがあげられる。メンバーの生産性に影響してしまうので、大きすぎるチームにはあまり向いていないかもしれない。

本題

僕は「今日のノート」というのを毎日書いていて、それをほぼそのまま日報にしている。ノートには今やっている作業や問題点をどんどん書いていく。そうすることで1日を振り返ってやった作業を思い出す時間が必要なくなるので、日報を書くコストが少し減る(気がする)。時系列に書いていくので、どんな1日だったか読み手が想像しやすいないようになっていると思う。やった作業を逐一書き込んでいくので、あとから振り返りやすい。一度やった作業を忘れてしまった場合、ググるより先にまず過去のノートを検索することができ、効率がいい。ノートはMarkdownで書いてgitで管理している。楽に運用できるようにちょっとだけ工夫しているのでまとめておく。

tnコマンド

ただのシェルスクリプト。所定のフォルダに今日のMarkdownファイルを作成して開いてくれる。tnと打てばすぐにノートを書き始められるので便利。はじめるための障害を小さくすることで習慣が続くようにしている。フォルダは月ごとに分けているので、フォルダ作成も自動でやってくれるようにしている。

Atom

atom-editor

テキストエディタですね。使い慣れたものを使うのが一番だと思うけど、Atomスニペットが使えるのでありがたい。また、GoogleIMEの設定を変更して日本語入力中でも#*が半角になるようにしておくとMarkdownを快適に書ける。

スニペット 概要
table テーブル
l リンク
img 画像
b 強調
i イタリック
code コード
t チェックボックス
legal 著作権表示
lorem ダミーテキスト

【Atom】Markdownで使えるスニペット一覧 - Qiita

Markdown Here

markdown-here.com

ノートを日報としてメールで送ってチームに共有するのだが、僕は基本的に小見出しと箇条書きの他にコードやコマンドを貼り付けたりリンクを貼ったりする。その場合、生のMarkdownよりHTMLに変換された方が読みやすい。Markdown HereはChromeFirefoxSafariなどで使えるブラウザ拡張機能で、Markdownで書いた文書を一瞬で変換してくれる。ctrl + option + mで変換できる。

git

別にバージョン管理をする必要はないのだが、リモートリポジトリに置いておけば他の環境にコピーしやすい。GitHubでもいいんだけど、無料でプライベートリポジトリを使いたかったのでbitbucketにプッシュしている。

まとめ

どんな情報共有の手法を採用するかはチームの事情によると思うので、これが全てにおいて最適というやり方はないと思う。課題もたくさんある。もっと自動化して出来る限り日報を書くことにかかるコストを下げ、自分が取り組むべき問題にフォーカスできるようにしたいという思いがある。

Atom実践入門──進化し続けるハッカブルなエディタ (WEB+DB PRESS plus)

Atom実践入門──進化し続けるハッカブルなエディタ (WEB+DB PRESS plus)

広告を非表示にする

夫が17時に帰宅したらどうなるか #もしも定時で帰れたら

前にも書いたが、僕は今朝型勤務をしていて、16時半ごろには仕事を終えて17時前には帰宅する。平日のスケジュールをまとめてみる。

家族構成

  • 夫(僕)
    • プログラマ
    • いわゆるエスイーではない
    • 7:30-16:15勤務
    • 残業はしないさせない持ち込ませない生きて帰すな見たら殺せの精神
  • 妻(美人)
    • 今年娘を出産
    • 専業主婦
    • 美人
  • 娘(かわいい)
    • もうすぐ10ヶ月
    • はいはいしたり、つかまり立ちしたり目が離せない時期
    • かわいい

1日の流れ

  • 6:20 起床
    • 身支度、朝食
    • 妻がお弁当を作ってくれる(←ありがたい!!!)
  • 6:50 家を出る
  • 7:20 オフィスに着く、仕事開始

  • 16:30ごろ 仕事終わり

  • 17:00 帰宅
    • 帰ったときにはいつも夕飯の準備はほぼ終わっている(←ありがたい!!!)
  • 17:30 お風呂
    • 妻と手分けをして片方が入れて片方がお風呂に連れて行って迎えに行く
    • 娘が終わったら交代で自分たちも入る
  • 18:30 娘の夕飯
  • 19:00 夕飯
  • 19:30 片付け
    • 食洗機があるけど調理器具を手洗いしたりゴミをまとめたりで20分くらいかかる
    • 片付けてる間は妻に娘を見ていてもらう
  • 20:00 ゆっくり
    • テレビを見たりブログ書いたり
  • 21:00 寝かしつけ
    • そのまま自分たちも寝る
  • 21:30 就寝

娘のお風呂や夕飯の時間はその日の本人の気分次第で前後する。帰ったらお昼寝しているときもあるし、寝かしつけ中のときもある。

育児参加について

やっぱり娘が手がかかる時期なので、できるだけ家事育児に参加するように努力している。また、それ以上に仕事で疲れないための努力を最大限している。疲れたら何もしたくない。そのために長時間労働しないというのは本当に重要。妻にも育児で疲れてほしくないので、僕ができることはなるべくやっているし、効率化のための投資は惜しまないようしている。僕はがんばっているつもりでも、結局は家事育児の大部分は妻にやってもらっているので、僕の家事育児への参加が足りない部分があったら遠慮なく言ってもらうようにしている。

長時間労働は社会的な問題なので、行政や政治(つまり有権者全員)ががんばらないといけない面もあると思うが、オーバーワークにならないように会社側と交渉するとか、条件が良いところに移るとか、個人でできることもあると思う。全国のパパとママ、がんばってください。

DSC_0272

部下を定時に帰す仕事術 (ポケット・シリーズ)

部下を定時に帰す仕事術 (ポケット・シリーズ)

広告を非表示にする

【Rails】rake db:seedでテストユーザーを作成する

Rails力とSQL力が低すぎて基本的なことからググりながらできたので、メモっておく。

環境

参考

手順

  1. seeds.rb を編集
  2. rake db:seed (一度全削除したいときはrake db:setupとか)

これだけでいいはずなんだけど、今触っているRailsアプリにはユーザーのアクティベーションが必要で、何故かそれはUser.createでアクティブにできなかったのでDBを直接書き換えた。

  1. psql postgres でPostgresを起動
    • rails dbconsole を使えるならそっちでもいい
  2. \c $DB_NAME でDBに接続
    • rails dbconsole で入れば省略できるっぽい
  3. UPDATE users SET active=true 等でアクティベート

seeds.rb の中身(例)

100.times do |index|
  no = index + 1
  user = User.create(
    name:           "user_#{no}",
    email_address:  "email_#{no}@example.com",
    password:               "#{no}password#{no}",
    password_confirmation:  "#{no}password#{no}",
    address:        "aaaa",
    phone:          "bbbb"
  )
  user.save!
end

Ruby on Rails 5 超入門

Ruby on Rails 5 超入門

広告を非表示にする

iPhone 7 plusで今すぐ始める爆音シャッター生活

Untitled

買ったもの

iPhone 7 Plus 32GB ブラック

Why iPhone now?

フルチャージ入社による賞与的なアレです。あとiDとSuicaを一元化したかった。

32GBってwwwwww

すみません。

なぜジェットブラックを選ばなかったのか

32GBが欲しかったから。

なぜPlusか

ポートレートモード最高。無駄に撮りたくなる。

Untitled

シャッター音について

うるせぇ。。。

Untitled

広告を非表示にする

使わなくなったCDコンポとオーディオケーブル1本で始める、お手軽爆音テレビ&スマホ生活

オーディオケーブルを買って、テレビやスマホの音声出力をいい感じにした。

買ったもの

Untitled

オーディオケーブル(1.5m)を近所のベスト電器で購入。800円くらい。Amazonだともっと安そう。

フジパーツ オーディオケーブル 2ピン-2ピン 3m FVC-321B

フジパーツ オーディオケーブル 2ピン-2ピン 3m FVC-321B

セットアップ

ケーブルをテレビ(AQUOS)と昔使っていた普通のCDコンポに繋ぐ。

Untitled

ちなみにこれは僕のものではなく、妻が高校生くらいのときに買って実家に置いたままにしていたもの。MD全盛期の時代の産物で、CDからMDに取り込んだりカセットテープを再生できるスグレモノである。福岡に引っ越したのを機に実家から持ってきてもらった。デザインがリビングに合ってていい。

テレビ側の設定を変える。設定画面から音声出力を「可変」かつ「TV側のスピーカーからは出力しない」にできたので、そうした。テレビによってはテレビ側で音量を制御できない場合もあるかもしれない。

構成

スマホorMac → (AirPlay) → AppleTV → (HDMI) → AQUOS → (オーディオケーブル) → アンプ(コンポ) → スピーカー → (空気振動) → 人類

無駄に複雑な構成になったが、我が家ではAppleTVと録画機器がテレビに繋がっているので、テレビの出力をすべてコンポ側に流せば、普通のテレビ番組・録画した番組・AppleTV(Netflixなど)・スマホからのAirPlay(Spotifyなど)がすべてスピーカーから出力できるようになるので、メリットが大きい。

はじめはbluetoothレシーバーを買ってコンポにつなげようかと思っていたのだが、それだとテレビ側は恩恵を受けられないし、いちいちペアリングするのが面倒だったりする。ケーブルでテレビとつなげばそれでいいことに気づき、作戦を変更した。

検討していたのはこの2つ。

音について

いい。うちはhuluやNetflixで娘に幼児用番組を見せることが多いのだが、ことちゃんとワンワンのたのしいおうたを豊かで締りのある低音と伸びのある高音域で聴けて胸が熱くなった。

www.hulu.jp

ひとつだけ面倒な点があって、オーディオケーブル経由だと音量が小さいようで、コンポ側の音量を上げないといけない。CDなどコンポを使って再生するときはテレビ用の音量設定だと大きすぎるので、再生する前に音量を下げる必要がある。

まとめ

テレビ側で音量を制御できるのがよい。もし同じような構成にするなら、テレビ側に設定があるかどうか確認しておいたほうがいい。そうしないとチャンネルの変更はテレビのリモコンを使い、音量の変更はコンポのリモコンを使うといういっそ殺してくれ体験を強いられる。

コンポ側が対応していたので、光デジタルケーブルでも良かった。なんかデジタルのほうが良さそう。

フジパーツ オーディオケーブル 2ピン-2ピン 3m FVC-321B

フジパーツ オーディオケーブル 2ピン-2ピン 3m FVC-321B

広告を非表示にする

Geeks Who Drink in nulabに行ってきた

English

nulab.connpass.com

Geeks Who Drinkに参加してnulabさんのオフィスに行ってきた。福岡での勉強会・交流会は初参加になる。

Geeks Who Drinkについて

On December 8th we will host another "Geeks Who Drink" for programmers, designers, and others! This time, we have special guest Ash Ryan, Adobe SDK Evangelist, joining us from New York! Come join us in the cafe space on the 7th floor of nulab's Fukuoka office! Drinks and food are provided, and you are welcome to invite your friends. 当イベントでは、いつも私たちがお世話になっているプログラマーや、デザイナーや私たちのサービスを使っていただいているユーザのみなさんと技術やデザインなどについて語りつつ飲みつつ交流をします。 フリードリンク、フリーフード準備させていただきますのでお気軽にお友達お誘いの上お気軽におこしください。 今回は、Adobe SDKエバンジェリストAshに、ニューヨークから来ていただいています!

だそうです。

Untitled

Untitled

Untitled

nullさんのカフェスペースみたいなところ。広くておしゃれでかっこよかった。また行きたい。

Cacoo Next Generation

  • FlashからHTML5 + JavaScript
  • ローカルDB+JSONでオブジェクトを管理
  • SVG
  • 省メモリ省CPU負荷、ハイパフォーマンス
    • とにかくハイパフォーマンスにこだわっているらしく、開発段階から「とりあえず動くもの」ではなくパフォーマンスを意識していたそう。
  • Adobeを完全に捨てたわけではないっぽい
  • 曰く、「同じ作図系のアプリケーションだが、Photoshopなどとは完全には競合しない」そう。
    • Adobe製品はプロ向け、Cacooはライトユーザ向け+コラボレーションツール
    • Adobe製品でデザイナーが作成した図をCacooにエクスポートして顧客やディレクターが確認・レビューするフローを想定しているっぽい
  • Flash上の閉じたプラットフォームではなく、オープンな技術の組み合わせを使っていくことは業界的にも1企業としてもいいことだと思う

Adobe Creative SDK

収穫

nulabさんの製品は使ったことがなく、個人的には不純な動機*1で参加したところ、偶然にも近所に住んでいる方に出会った。趣味も合いそうで、これからいっしょに頑張っていこうなという感じで熱い男の友情を交わした。

WEB+DB PRESS Vol.72

WEB+DB PRESS Vol.72

  • 作者: 近藤宇智朗,生井智司,Dr.Kein,tokuhirom,森田創,中島聡,堤智代,A-Listers,はまちや2,竹原,川添貴生,久保達彦,道井俊介,飯田祐基,中村知成,規世やよい,後藤秀宣,天野祐介,奥野幹也,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/12/22
  • メディア: 大型本
  • 購入: 11人 クリック: 94回
  • この商品を含むブログ (10件) を見る

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA

*1:エンジニアの友人探し

広告を非表示にする