倒れるときは前のめり。

カレーが好きです。

Meteor チュートリアル(Blaze)をやった

フルスタックなJavaScriptフレームワークのMeteor(みーてぃあ)を触ってみた。 JavaScriptだけ(?)でそこそこ動くWebアプリが作れるとは…と、 サーバサイド中心に触っていた自分としては驚きの連続。

URLはこちら

感想

  • リアクティブすげー
  • 値監視 → 変化したら自動レンダリング(再読み込み)
  • 2窓開いて一方でTODO更新すると他方にもリアルタイムで反映される

学習メモ

はじめてのMeteorアプリ作成

  • ホットコードプッシュ
    • ブラウザリロード不要でソース変更箇所が(ほぼ)リアルタイムに反映される
    • HTMLもCSSもリアルタイム!
    • 仕組みよくわからなすぎて気持ち悪い
    • どこを追いかければいいんだ…

Spacebarsでテンプレート

  • Spacebars < Handlebars をもとにテンプレート機能を提供している
  • テンプレートの構造(HTMLとか)は、bodyタグの外で定義する
  • テンプレートに入れるデータは、jsで定義する
  • {{#each}}のつかいかた

Mongoコレクション

艦○○これくしょんではありません

  • MongoDBとは: いわゆるNoSQLの一種

    • NoSQL: Not Only SQL
    • Key:Value でデータを管理
    • キャッシュにデータ格納させる
    • RDBみたく厳重にデータのトランザクションしなくていいもの
    • パフォーマンス重視のデータを扱うときに使う(単純なカウントとか)
    • 代表的な例: MongoDB, KVS, Memcached
  • db.(schema).find

フォームとイベント処理

  • submitを起点に、mongoDBに連携させる
  • Tasks.insert({key: value})
  • event.target.text.valueの意味調べる
    • 発火元のテキストフォームの値ですよねこれ…

コレクション更新と削除

  • Tasks.update(selector, modifier, [options], [callback])
  • Tasks.delete(selector)
  • (callbackは書けるけどいら)ないです

はじめてのパーミッション制御

  • Meteor.methods
  • Optimistic UI
    • サーバ側とクライアント側両方に動作
    • まずはクライアント側を更新(サーバ側の処理結果は待たない)
    • サーバからの処理結果が反映されたらサイドクライアント側を更新
    • 処理結果が同じなら、UI上変化なし

フィルタリング制御

  • DDP
  • autopublishパッケージ
  • publish / subscribe

次にやる

Ruby on Rails チュートリアル 第3版 を終えた

はじめに

5月の連休からRuby on Rails チュートリアルに取り組みはじめて本日完走。

やり遂げた興奮が冷めやまないうちに、学習の記録を残しておく。

もくじ

  • スペック(開始時)
  • なぜRoR
  • 学習時間
  • 意識したこと
  • 感想
  • 次にやりたいこと

スペック(開始時)

  • PHPRDB歴1.5年
    • 学生時代はプログラミング経験なし
    • 社会人になってからプログラミングに携わる
    • 業務では自社製オレオレPHPフレームワークを使用
    • 業務外ではなんとなくLaravelを触る
  • ローカル環境にVMで仮想環境作って、OSからミドルウェアのインストール設定までひと通り経験アリ
  • Git・AWSは業務でも使ってる
  • テストコードなにそれ?

なぜRoR?

  • PHP以外の言語(オブジェクト指向言語)を触ってみたかった
  • チュートリアルをやれば、モダン(っぽい)開発手法をひと通りさらえると思った
    • テストコードを書きながら開発するとか
    • Herokuを使ったデプロイとか

学習時間

RailsTutorial_Completed___201606112000.png

  • 33h02m(うち実働19days ≒ 1.7h/day)
    • 平日は帰宅後1〜3h
    • 土日はだいたい3〜4h

意識したこと

できるだけ毎日コードを書く

  • まったく触らない日をゼロにしたかった(間が空くとすぐ忘れてしまうので)
  • 社内行事など諸般の事情で叶わかなかったが、1週間ノータッチという事態は避けられた

時間をつくる

  • 平日20時帰宅でも21〜24で最大3hは取れる(意外とできる)

場所をかえる

  • 土日に自宅から一歩も出ずにコード書いてるとなんだかんだ気が滅入る

作りたいサービスを想像(妄想)する

  • これがいちばんかもしれない
    • 2016年中には出したい

学習時間をつける

  • toggl with trello でやってみたらいい方向にハマった
  • 学習時間をかんたんに記録するための仕組みづくり
    • trelloにタスク突っ込む
    • trelloからtoggl着火
    • 1章終わったらつぎの章へ
    • 週ごと・章ごとに作業時間振り返ってニヨニヨできる
      • やっぱり8章てごずったなーとか
      • 12章、意外と楽勝だったな?とか

感想

達成感がハンパない。この一言に尽きる。

プログラミングの学習としての写経は以前にも何度かやってきたが、PDF換算で700ページともいうボリュームは今回がはじめて。実際にチュートリアルを進めていく中で、何度も心が折れかけた(とくに8章や8章)。それだけに、最後まで走り切った時の充実感・爽快感・解放感(?)は筆舌に尽くしがたい。

チュートリアルの日本語版翻訳を務めている@yasulab氏が作成したこちらのスライドの3〜9ページが秀逸。わからない・足りない箇所を知るためにも、まずは山を登り切る(登り切ってしまえば、あとはいかようにでも)、というところか。

完成したサンプルアプリそのもののクオリティもさることながら、Web開発に関するトピックをひと通り学習できるのもありがたい。

  • MVCの考え方、RESTfulなルーティング
  • Gitをつかったバージョン管理
  • クラウド環境へのデプロイ
  • セキュリティ・認証
  • コードのリファクタリング、TDD

単なるプログラミング言語、Webアプリケーションフレームワークの使い方講座で終わらないところが、実にいい。

反面、Railsの作法が細かくて、1周やった程度では到底身につかないなと(e.g. モデルやコントローラの命名ルール、ActiveRecordやアセットパイプラインの仕組みなど)。 Railsガイドや書籍等で適宜知識を補っていく必要性を感じた。

これから

もう一度最初からチュートリアルに挑戦しようと思っている。 テストコードこそ書いていたが演習はスキップしたので、次は演習ふくめて全て取り組みたい。 1ヶ月前の自分が気づかなった新しい発見は必ず自分のためになると信じているので。

2016年5月に読んだ本

5月は連休もあってまとまった時間を確保して読書できた感ある。

旅先のカフェや移動中の電車の中で読むことがほとんどで、 あとは自宅の風呂に入りながらとか、始業前やお昼休み等のすきま時間を 使ってちまちまと読み進めている。

読んだ本

JavaScript本格入門

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで

JavaScript本格入門 ?モダンスタイルによる基礎からAjax・jQueryまで

  • JavaScriptを「なんとなく」触れるようになった段階から、体系的に知識を整理しようと思って(昨年秋に)購入、2周通読
  • プロトタイプベースのオブジェクト指向の書き方や、クロージャの使い方等、(恥ずかしながら)今まで使ったことがなかった内容も、必要十分な解説で理解できた
  • 「"わかった気"で終わるのではなく、きちんと動くモノを作るために」との謳い文句に違いなく、自信をもってJavaScriptを使えるようになれる良本

Webを支える技術

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

  • HTTPとかRESTfulとか、Webを取り巻く仕組みをあらためて理解しようと、1〜2周通読
  • GETやPOSTなど各メソッドの意味の違いをさくっと理解するにはよかった
  • OSSフレームワーク等触りはじめて、RESTfulなルーティングを設定する際に「patchってなんぞ…?」とならなくなったのは収穫
  • 後半のXMLatomなどフォーマットの違いはあまり親近感なくて飛ばし読み気味

オブジェクト指向のこころ

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

これだけ!KPT

これだけ! KPT 【これだけ!シリーズ】

これだけ! KPT 【これだけ!シリーズ】

  • 2周ちょっと通読
  • ここ最近の目標面談があまり振り返りの意味を成せてないような気がして
  • というより各PJの振り返りをやっていない時点で(ry
  • KPTフレームワークによる振り返りのが簡潔にまとまっているので、日頃の業務・ミーティング等への実践に移しやすい
  • あとは如何にチームメンバーを巻き込んでいくか

パーフェクトPHP

パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)

  • 別途進めているRailsチュートリアルの復習を兼ねて、7章「フレームワークによる効率的な開発」だけつまみ食い
  • 業務ではオレオレ自社フレームワークしか使ったことなかったこともあり、OSSなWebアプリフレームワークを一度は触ってみよう(むしろ触っておかないとマズいのでは)と思ったのがきっかけなのだが、これはまた別の話
  • MVCの分離はもちろん、セッションやルーティングの原理など、フレームワークのコアの部分を(なんとなく)理解できた

はじめてUNIXで仕事をする人が読む本

  • ふだんQiitaやはてブの検索結果ベースでその場をしのいできたけれど、そろそろまとまった知識をつけておきたいと思い、1周通読
  • シェルの使い方からgrep/awk等の各種コマンド、セキュリティやネットワークなどそこそこに分野を広く・深くまとめているため、1周ちょっとじゃ理解が追いつかない箇所が多い

リーダブル・コード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 去年の2月に紙媒体で買って以来ことあるごとに読み返していたが、"紙の"書籍を持ち歩く面倒臭さから売却、オライリー社で電子版を再度購入
  • 変数やメソッドなどの名前の付け方から、ロジックの調整等、手のつけやすい箇所がたくさんあってよい
  • 開発チームメンバーに普及させたい

レガシーコード改善ガイド

レガシーコード改善ガイド

レガシーコード改善ガイド

  • 「システム保守の現場でありがちな、構造が複雑で理解できないようなコードに対する分析手法・対処手法について解説します。つまり、「コードを理解し、テストできるようにし、リファクタリングを可能にし、機能を追加できるテクニックを紹介している書籍です(Amazon解説文から)」
  • NOオブジェクト指向・NOフレームワーク・NOテンプレートないかにもレガシーっぽいシステムに機能追加するミッションが舞い込んできたため、自分の身を守るべく急遽購入
  • 内容がなかなか難しく、読書のペースが上がらない…

響け!ユーフォニアム(1)

  • アニメはニコ生の一挙放送で通して観た程度だが、劇場版を4回観に行った程度にハマってしまい、原作まとめ買い
  • ちなみに1回は舞台挨拶付き上映@新宿、主人公役の女性がめちゃくちゃ優秀というか有能オーラが漂っていた
  • 別の1回は爆音上映@川崎、吹奏楽の演奏を全身で浴びる至福の瞬間を味わった
  • アニメから入って原作を読み進めると、細かい箇所で違いがあって楽しめる
  • 有名なところだと、三日月の舞が原作ではコンクールの課題曲になってたり
  • とりあえずこれだけは言いたい。「香 織 先 輩 マ ジ 天 使」

ターミナルを起点になにかする(Finder, Atomを開く)

ターミナル開いて、Atomにフォーカス当てて、Finderで…と移動するの面倒くさいなー。 と思って調べたところ、ナイスなやり方があったのでメモしておく。

# 現在のフォルダをFinderで開く
$  open ./

# 現在のフォルダをAtomで開く(要: Install Shell Commands)
$ atom ./ 

この2つだけを使えるだけでも、だいぶ効率違う。

つぎはAtomからのターミナル操作を極めよう。

風呂de読書が捗る

「風呂場で湯船に浸かりながら技術書を読み進める」習慣が、ここ最近の自分でアツい(風呂だけに)。

最近だと、

  • JavaScript 本格入門
  • リーダブル・コード

あたりは、もっぱら風呂場で読み進めている。

風呂場には、余計な邪魔だったり誘惑要素が一切入らないのがよい。

やってること

  • 湯船に浸かる->シャワーでリフレッシュ->…を交互に繰り返すだけ
  • 具体的には
    • 25分湯船に浸かりながら読書
    • 5分冷水シャワーで休憩
    • 25分湯船で読書
    • 以下ループ

所感

  • 湯船で読書と冷水シャワーのループを2セットもやると、心身が非常にスッキリする
  • 風呂あがりに飲むコップ1杯の水が最高にうまい
  • 本が濡れてしわくちゃになるのが嫌なら、Kindleタブレット電子書籍を読むのがよい

最近買ったもの(2016.01 〜 2016.04)

正確には2015.11から2016.04まで

買ったもの

カール事務器 ツールスタンド

  • なんかのブログ記事見てビビッときて購入
  • 机の上に転がってるハサミやペンとか小物を突っ込むだけでいい
  • 手軽さ(気軽さ)すごく大事

Amazonオリジナルマグカップ

AGF マキシム カフェアラカルトスティック 50本

  • 味のバリエーションあるし飽きたら牛乳混ぜて飲めるしでよい

ミズノ ウェーブライダー18

フォームソティックス Run Dual

asics スポーツバッグ ランニングウェストポーチ

  • あまりに運動不足感を感じていたので土日ランニング開始
    • まともにシューズ買ったのは3〜4年ぶりくらい
  • ウェストポーチはスマホと家の鍵に小銭+αが入るミニマムさがよい

1byone 目に優しいオリジナルLEDデスクライト

  • バッテリー内臓 + microUSBによる給電ができるデスクライト
  • よけいな物理スイッチが一切なくてスタイリッシュ

リステリン トータルケア

ユニクロ エアリズム インナー

ユニクロ|AIRism(エアリズム)|MEN(メンズ)|公式オンラインストア(通販サイト)

  • †すべてのインナーを過去にする†
  • 着ている感じがしない
  • さらさら気持ちいい
  • 手持ちのインナー捨て去りたい