garbagetown

個人の日記です

TED日本語 - サンジェイ・ダストゥア: 原付スケートボード

今日は Play Framework 2 Meetup に参加したため珍しく意識が高まっており、あまり時間を使いたくないので短めのやつを選んでみました。

短いです。4 分 21 秒のうち 1 分は下の画像のような音声のないイメージビデオなので更に短い。

f:id:garbagetown:20140524222315p:plain

原付と言っておきながら原動力はガソリンではなくて電気です。自転車道路も整備されていない凹凸だらけの日本では使い物にならないと思いますが、話し方が落ち着いているので聞き取り易いです。知らない単語も数えるくらいしか出てこなかったような気がします。

それでも字幕を消して見ると聞き取れないところが何箇所もあって、この 先生きのこる ことができるか不安です。

というブログを微笑ましく読み返すことができる日が来ることを祈っています。

TED日本語 - マイケル・ディキンソン: ハエはどうやって飛ぶの?

今日はこれ。

速い。本人も自覚はあるらしく下の画像のようなジョークを挟んでいて、それで笑いが取れるくらいに速い。

f:id:garbagetown:20140523221220p:plain

このスピードで五秒と黙ることなく 15 分間しゃべりっぱなしなので、話している方もそりゃ疲れるだろうけど聞いている方も疲れる。ただし滑舌は悪くないと思うので、知っている単語はけっこう聞き取れた気がします。

デジタルキャストおれおれ鑑賞法

いろいろやってみた結果、今はこんな風に鑑賞しています。

  • 1 回目。英語と日本語字幕を両方表示して観る
    • 英語と日本語の字幕に視線を集中する。動画も視野に入っているけどちゃんと観ていない
    • 耳に入ってくる音と目に入ってくる英語と日本語をひたすらマッピングする。語順の関係で単純にマッピングできないことが多く、けっこう頭も使う
    • 話の内容と知らない英単語をざっくり覚える
  • 2 回目。英語の字幕だけ表示して観る
    • 字幕と動画に視線を集中する
    • 耳に入ってくる音と目に入ってくる英語を思い出して話の内容を理解する。スライドの内容が記憶を掘り返すヒントになる
    • 聞き取れないところ、理解できないところ、覚えていないところがあっても気にしない
  • 3 回目。字幕なしで観る
    • この辺りでだいたい酔っぱらっているのであまり意味がない
    • 分かった気になって無駄な自信を付けることが目的
    • 努力した気になって無駄に安心することが目的

五月病かなと思ったら試してみてください。

TED日本語 - エディス・ウィダー: いかにして巨大イカを見つけたか

今日はこれを観てみました。

NHK スペシャルでも話題になった大王イカの話なので興味深く、8 分 38 秒と短めなので二回観ました。いま三回目を流し聞きながらビール片手にこのブログを書いています。

f:id:garbagetown:20140520204056p:plain

最初の方は緊張しているのか少し早口で抑揚も弱く、ちょっと聞き取りづらい感じですが、だんだん落ち着いて少しずつ聞き取れるようになりました。

分からない単語も多かったです。"devour" なんて初めて聞いた気がします。

また、最後に "we miss him" と言って終わるのですが、"him" や "her" の最初の "h" は日本人の耳には聞き取りづらい気がします。間違っても "ヒム" や "ハー" のようには聞こえないので、カタカナ英語の固定観念を頭から追い払っていかないといけないなと思います。

このあたりはコンピュータ用語にももやっとした違和感とか疑問を感じているところではありますが、それはまた別の機会に。

英語が学べる動画サイト | デジタルキャスト

近頃どうも五月病に罹患したようで、無駄にキラキラ意識の高い Facebook なんてとても見ていられないですし、モヒカンがマサカリを振り回している Twitter も劣等感に圧し潰されそうになってつらいのですが、なにもせずにごろごろしているとそれはそれで気ばかり焦るので、少しでも有意義な時間を過ごせればとデジタルキャストを観ることにしました。

本日視聴したのはこちら。

TED のプレゼンは 15 〜 20 分程度のものが多く、集中して聞くと程よく疲れていい感じです。

同じ動画は TED.comYouTube でも観ることができて、TED.com では英語や日本語のスクリプトを読むことができますし、それらを字幕表示することもできますが、YouTube は英語字幕だけのようです。

デジタルキャストでは下の画像のように英語と日本語の字幕を並べて表示することができて、これが面白いです。

f:id:garbagetown:20140515232227p:plain

上の画像は英語と日本語が一致している部分がありますが、英語と日本語は語順が逆になることがあるので、下の画像のように英語と日本語がほとんど一致しないタイミングが頻繁にあり、いま日本語でこう書いてあるってことは次のシーンの英語にはこの単語が来るかな、と予測しながら聞くことができます。

f:id:garbagetown:20140515234120p:plain

翻訳の勉強にもなりますし、しばらく続けてみようと思います。

WEB+DB PRESS vol.80

見本誌を頂きました。いつもありがとうございます。

WEB+DB PRESS Vol.80

WEB+DB PRESS Vol.80

今回の特集は「Web技術入門」「実践テスト駆動インフラ&CI」「はじめてのMac開発環境」の三本です。また、特別企画として「エンジニアの学び方」、一般記事として「Courseraで計算機科学を学ぼう」などが掲載されています。

以下、簡単ではありますが紹介します。

Web技術入門

Web を支える技術が基礎から丁寧に解説されており、同じく技術評論社様から出版されている下記書籍の要約版という印象です。

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

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

スマートフォンの爆発的な普及に伴い、「PCの死」と「平等なウェブ世界の終焉」 などとも言われる昨今ですが、今後のインターネットがどのように進化するとしても、本特集で解説されている技術に基づいて実現されるであろうことは間違いなく、「10 年先も役立つ」というサブタイトルの通り、末永く役に立つ内容です。

なんとなく Web アプリケーションを開発してしまっているエンジニアは、本特集を読んで基礎を固めると良いと思います。

実践テスト駆動インフラ&CI

米 Black Duck の「オープンソースルーキー」に入選 した serverspec の作者、宮下さんによる特集です。

自分が観測、記憶している限りでは伊藤直也さんの 「Kindle向けに『入門Chef Solo - Infrastructure as Code』を出版しました - naoyaのはてなダイアリー 」というエントリから広まったと思われる Infrastructure as Code と、これまではアプリケーションの開発手法であったテスト駆動、CI を組み合わせることで、インフラの構築もコードで表現し、自動的にテストしてしまおうという内容です。

serverspec が汎用的であるために、プロビジョニングツールには敢えて利用者の多い Chef ではなく、Puppet を採用されたとのことです。

まずは手元の MacVagrant を使ってインフラコードを記述、テストした後、GitHub と Wercker, DigitalOcean を連携することで継続的にテストし、最後にこれらのワークフローを GitHub の PullRequest ベースに変革する手順が具体的に紹介されています。

仮想マシンを次々と上げ下げする必要のあるサービスを提供する企業などに勤めていないと、ここまでするメリットは実感できないかもしれませんが、インフラのコード化やテスト駆動、GitHub Flow は(もともとアプリ開発の現場から生まれた技術なので当然ですが)アプリケーション開発の現場においてもとても有効な技術なので、本記事に目を通して概要だけでも把握すると良いと思います。

はじめてのMac開発環境

Ruby on RailsiOS アプリ開発の人気に伴い、Mac ユーザの数がとても多くなりました。自分も Windows から Mac に移行したひとりです。

本特集では、Mac OS XWindows の違いについてはあまり触れず、Mac 初心者向けに UNIX コマンドや開発環境構築手順などを紹介した後、チュートリアル形式で簡易な Web アプリケーションを開発する手順を紹介しています。

近頃は Ruby on Rails をはじめ、Windows で開発するのが困難な Ruby 製プロダクトがとても多くなり、また DevOps 時代などと言われ、アプリケーションエンジニアにも Linux の操作を含めインフラの知識が当たり前に求められます。

これまで Windows とマウス、カーソルクリックでコンピュータと対話してきた方も、ぜひ本特集に目を通して CUI の世界に入門してみてください。

エンジニアの学び方

日々あふれ返る情報を効率的に収集、理解、応用する方法が解説されています。

この業界に長らく関わっている人であれば、それこそ勘と経験と度胸でこれらの情報を処理できていると思いますが、日々学習する習慣がまだできあがっていない人は、何から手を付けて良いか分からず、そうこうしている間に分からないことが増え続け、あっという間に学習できない悪循環に陥ってしまうのではないでしょうか。

まずは本記事に目を通し、ある程度は割り切って機械的に情報を処理していくことで、自分なりの学習リズムを作り上げることできると思います。本記事執筆者の西尾さんによる以下のスライドも併せて参照されると良いでしょう。

Courseraで計算機科学を学ぼう

スタンフォード大学などの有名教授による講義を全編英語の動画で学習しましょうという、なかなかハードな印象のあるテーマを取り扱った興味深い記事です。

自分も昨年、@wm_eddie さん から Coursera に Martin Odersky 教授の Functional Programming Principles in Scala という講義があることは教わっていたのですが、やはりそれなりにハードルが高く、まだ受講できていません。

とは言え、RailsCasts などを観れば分かる通り、技術系の英語であれば画像と併せて視聴することでとても理解し易くなるので、興味のある方は覗いてみるとよいと思います。

自分も、以下に引用する本記事のまとめ欄のひと言を胸に刻み、もう一度がんばってみようと思います。

向上心にあふれた本誌読者のみなさんは、Coursera のサイトにアクセスして、少なくとも受講登録まではしてくれることと期待しています。

まとめ

毎年恒例の新人さん大歓迎号ということで、エンジニアの基礎固めに最適な内容でした。

まだ Amazon に在庫 があります ので、新人さんに限らず、モダンな開発から長らく遠ざかってしまった管理者の方なども、目を通されると良いと思います。

WEB+DB PRESS vol.79

もう随分前になるのですが、見本誌を頂いておりました。いつも本当にありがとうございます。

炎上案件に放り込まれてフテくされていたら、すっかり書評が遅くなってしまいました。大変申し訳ありません。

WEB+DB PRESS Vol.79

WEB+DB PRESS Vol.79

  • 作者: 成瀬ゆい,そらは(福森匠大),西磨翁,小川航佑,佐藤新悟,塚越啓介,藤原亮,堀哲也,田村孝文,桑野章弘,松浦隼人,中村俊之,田中哲,福永亘,杉山仁則,伊藤直也,登尾徳誠,近藤宇智朗,若原祥正,松木雅幸,奥野幹也,後藤秀宣,羽二生厚美,笹田耕一,平河正博,東舘智浩,渡邊恵太,中島聡,A-Listers,はまちや2,川添貴生,山田育矢,伊藤友隆,村田賢太,まつもとゆきひろ,佐野岳人,山口恭兵,千葉俊輝,平松亮介,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2014/02/22
  • メディア: 大型本
  • この商品を含むブログ (4件) を見る

今回の特集は「Ruby最深動向」「これからはじめるiOS 7開発」「実践メンテナンス」の三本です。また、連載記事として「Dockerによる軽量な仮想環境」「AngularJS入門」などが掲載されています。

以下、簡単ではありますが紹介します。

Ruby最深動向

2013 年クリスマスに予定通りリリースされた Ruby 2.1 の主な変更内容について五章に渡って紹介されており、最後に特別寄稿としてまつもとさんのによる『Ruby の「これまで」と「これから」』が掲載されています。

個人的に Ruby に触れる機会があまり多くないため、言語仕様の詳細な変更点についてはぴんと来なかったのですが、第四章のがベージコレクションの改善がとても面白かったです。なぜ Ruby 2.1 の GC が通常の世代別 GC と呼ばれず、RGenGC と呼ばれるのかについて、Ruby 2.0 までのマーク&スイープ方式と併せて分かり易く解説されています。

実際に業務で使用している RedmineRuby を 2.1 に上げてみたところ、はっきりと体感できるほど速くなりました。Ruby は遅いと言われ続けてきましたが、確実に改善されていることが分かります。

これからはじめるiOS 7開発

自分が記憶している限りでは WEB+DB PRESS では初めて拝見するヤフーのエンジニア面々による特集です。

iOS の基礎知識から始まり、iOS アプリ開発環境の簡単な構築手順、質問リストアプリ作成手順と続き、iOS 7 から導入されたフラットデザインの勘所、Xcode によるデバッグ、テスト、CI 、クラッシュ対策など実践的な内容まで、幅広く紹介されています。

また、コラムとして Push 通知の実装、アプリ開発で役立つ参考資料まとめまで掲載されており、Mac 一台とこの特集さえあれば、とりあえず iOS アプリ開発のはじめの一歩が踏み出せる内容です。

実践メンテナンス

新しいプロダクトの紹介に止まらず、システム開発、運用の現場に踏み込んだ WEB+DB PRESS さんらしい特集です。

サイバーエージェントの面々が、システムメンテナンスの概要から、計画/緊急メンテナンスの流れ、メンテフリーへのアプローチ(インフラ編/アプリケーション編)と紹介し、最後はガールフレンド(仮)アメーバピグで実際に発生した事例を紹介されています。

前半はメンテナンスとはなにかということを定義し、中盤ではいかにこれを行わずに済ませるかというアプローチをインフラ、アプリの側面から解説し、最後にこれらを踏まえた実践的な開発および運用手法と、実際に起きた問題および対応を紹介するという構成となっており、とても読み易いです。ガールフレンド(仮)Java 製というのが少々意外でした。

MySQL や MongoDB に関するノウハウや、Tomcat の parallel deploy, git-flow ライクな git ブランチ運用フローなど、とても参考になります。

Dockerによる軽量な仮想環境

今やその名を目にしない日はないほどの勢いで広まっている Docker の紹介です。

Docker の概要から始まり、Docker を実際に動かす手順、Docekr イメージや Dockerfile, Docker Remote API の紹介などに続き、Docker のユースケースや Immutabl Infrastructure の今後についてまとめられています。

Docker は、本連載記事のタイトルにもある通り軽量仮想環境として紹介されることが多いため、どうしても Virtualbox などの仮想環境と比較されたり、同じようなものとして誤解されることが少なくないように感じますが、本連載記事をご覧頂ければ分かるように、まったくの別物です。

個人的には、今すぐに Docker を何かしらの形で本番環境に投入するのは時期尚早だと思いますが、インフラ構成からデプロイ方法、アプリケーションアーキテクチャにまで影響を及ぼす可能性を秘めた重要なプロダクトです。しばらくの間、インフラ担当からアプリ開発者まで、Docker の動向を見守る必要がありそうです。

AngularJS入門

Backbone.js や Knockout.js を押さえて、ひとつ抜け出た感のある AngulaJS の紹介です。

AngularJS は覚えることがとても多く、誌面の関係上か主要な概念をひと通り紹介するに止まっており、本記事のみで AuglarJS のはじめの一歩を踏み出すのは難しいかもしれません。

一方、Web でよく見掛けるチュートリアル的なものでは「そういうもの」としてスルーされがちな各概念それぞれについて丁寧に説明されているので、本記事と Web 上のチュートリアルなどを併せて読むとよいと思います。

AngularJS は、同じく Google が開発する altJS である Dart へのポーティングも行われています。Google はこの他にも多くのプロダクトや規格を打ち出しており、本気を出せば Android + Chrome + Dart + Angular + SPDY/QUIC (+ Go ?) のような攻勢が可能なので、追従して損はないと思います(とも言い切れないのが Google プロダクトのような気もしますが)。

まとめ

今回は言語やフレームワークなどの技術的な側面と、メンテナンスなどの実践的な側面の両方を読むことのできる内容だったと思います。

このように旬のタイミングで記事を読むことができるということは、編集者さんは数ヶ月以上前から準備を進められているわけですし、執筆者の方々はさらに数ヶ月以上前からこれらの技術を日々使いこなされているわけで、頭が下がる思いです。

最後に、特集記事「実践メンテナンス」の第六章まとめから印象的だった文章を以下に引用します。

我々エンジニアは、現実に甘んじることなく、日々理想を追い続け、試行錯誤することで少しずつ稼働率を上げていくことこそ使命ではないでしょうか。

まだ Amazon に在庫 がありますので、ぜひ目を通してみてください。

チーム開発実践入門を頂きました

著者の池田さんより、レビューを担当させて頂いた書籍「チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド」 を頂きました。ありがとうございます。

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発の現場

本書の第一章に書かれている通り、複数人でシステムを開発する場合に気を付けなければならない課題が山のように存在します。リソース管理、課題管理、報告・連絡・相談、リリース管理などなど、タスクの八割以上はこれら課題に関連するものと言ってもいいと感じるほどです。

また、ひとりで開発する場合でも、過去の自分は赤の他人なので、本書に書かれている内容はやはりとても重要なものということになります。

これら課題の特徴として、以下のような点が挙げられると思います。

  • 最終的な成果物、納品物には直接寄与しない(ことが多い)
  • 手を当てなくても(超短期的には)問題にならない(ように見える)
  • 手間が掛かる、面倒くさい

プログラムのソースコードは成果物そのものであり、ソースコードを書かなければシステムは動きません。そして、あなたがエンジニアであればソースコードを書くのは楽しい作業のはずです。

一方で、例えばリソース管理や課題管理に使用する台帳はどうでしょう。請負開発であれば納品物として求められることもありますが、サービス開発であれば売上に直接寄与するものではありませんし、これら台帳を管理せずとも、とりあえずシステムは動きます。また、これらの台帳はマイクロソフトエクセルで作成されていることが多く、拡張子を見るのも嫌だという方が多いのではないでしょうか。

このような特徴から、これら課題はついつい後回しにされ、数ヶ月後に確実に発生する大炎上の火種となります。

本書の意義

やらなければならないけれど面倒くさいということは、そこに商機があるということなので、これらを解決するツールが有償無償を問わず多数存在しますし、既に数多くの書籍が出版されています。

それでは本書の意義はどこにあるのでしょう。以下に 著者の池田さんのブログ から引用します。

むしろのこの『チーム開発実践入門』という本は、『GitHub実践入門』、『Jenkins実践入門』、『JUnit実践入門』といった書籍の間をつなぐミッシングリンクのような本です。

この本で概要をつかみ、さらに個別の書籍を買って理解を深めることで、バラバラの知識が一つにつながることと思います。

これまでの書籍は、個々のツールを深く掘り下げたリファレンス的な内容であり、なぜそれが必要なのか、いつそれが役に立つのかについては、読者が既に理解している前提に立ったものでした。

しかし、実際の現場には日々の課題に翻弄され、これらのツールの存在すら知らずに疲弊しているエンジニアやマネージャがまだまだ数多く存在します。本書はその名の通り、そのようなエンジニアやマネージャを対象とした「実践的なチーム開発の入門書」と位置付けることができると思います。

特に第二章は炎上案件に苦しんだ経験のある方であれば、読んでいて胃が痛くなるような現実味のあるケーススタディ形式で書かれており、この時期であれば新人教育などにも使い易い構成となっています。

最後に

昨今の景気回復気配と併せて、システム開発の現場も活気を取り戻しているように感じますが、それと比例するように炎上案件の数も回復してしまっているように感じます。

案件が炎上してから消火に当たっていては完全に後手であり、スピード感がますます重要視される昨今においては手痛い失態と考えなければなりません。

諸説あるようですが、老子の格言として「授人以魚不如授人以漁」というものが知られています。「人に魚を与えれば一日で食べてしまうが、釣りを教えれば一生食べていける」という意味だそうです。

案件が炎上してから慌ててリソースを追加するのは「魚を与える」対応であり、対処療法に過ぎません。必ずまた同じ過ちをくり返します。

本書はまさに「釣りを教える」書籍です。本書を読み、考えられる問題に先手を打つことで、限りあるリソースを有意義に活用するよう、チーム全体が強く意識していくべきだと思います。