Born Too Late

Yuya's old tech blog.

新卒 2 年目のゆとり Web エンジニアの糧となった 10 冊

2010-11-27 13:08:36

巷でプログラマの 10 冊ブログが人気なようなので便乗。
私が、新卒入社からの約 1 年半の中で読んだ書籍の中で、特に印象に残っているものを紹介します。

はじめに、私はプログラマではありません
仕事では自社サービスの運用に携わるなどしていて、開発の仕事もしていますが、運用・保守の仕事も多めです。

また、私は情報系学部の出身でもありません
プログラミングは趣味でやっていましたが、新卒入社時はオブジェクト指向の理解も RDBMS の経験もゼロでした。
入社したのも技術研修の無い会社なので、プログラミング等について、他人から体系的に学んだ経験もありません。

そういう背景から、セレクトの傾向は既出の 10 冊と、やや性格が異なると思います。
比較的平易なものが多いので、これから Web エンジニアになる、という方にも是非オススメしたい 10 冊です。

新卒 2 年目のゆとり Web エンジニアの糧となった 10 冊

オブジェクト指向のおもしろさを教えてくれた一冊。私の新卒一年目のテーマはすばりオブジェクト指向でした。オブジェクト指向は何であり、何でないのか、何が嬉しいのか。また、デザインパターンや UML 、アジャイルといった、オブジェクト指向の考え方から派生した、様々な技術について紹介されています。

各章の終わりには、理解を深めるための参考書籍も豊富に紹介されており、オブジェクト指向について学ぶ上でのインデックスになる 1 冊です。

PHP しか知らなかった私にとって、とても貴重な資料でした。この書籍のコードを写経することで、ようやくオブジェクト指向っぽく書けるようになったと思います。

GoF パターンについてもそうですが、 PHP5 におけるオブジェクト指向や、 SPL (Standard PHP Library) についても学ぶことができ、有象無象の PHP 本とは一味違う 1 冊です。

非常に残念なことに、現在は絶版となってしまいましたが、現在は Web 上で読むことができるようです。

オブジェクト指向についての理解を深めてくれました。また、初めて買った Ruby 書籍だったと思います。

Ruby の場合、 Iterator や Singleton 等どいったパターンは、 PHP よりかなり簡単に実装できることもあって、事情が大分異なります。そういった違いを通じて、 Ruby の魅力を知ることができました。

また、 DSL をデザインパターンとして詳細に紹介しているのも、 Ruby ならではでしょう。

今回紹介している書籍の中では、かなり難しい部類。

コーディングスタイル、アルゴリズムとデータ構造、デバッグ、テストの自動化等、重要なトピックが詳細に解説されています。「糧となった 10 冊」として挙げている割には、ほとんど理解できていないと思いますが、読み返すごとに色々気づかされます。

元々、純粋に JavaScript を書けるようになりたい、と思って買った書籍ですが、それ以上のことを教えてもらったと思っています。これもオブジェクト指向についての理解を深めてくれた 1 冊。

文法、オブジェクト、関数、プロトタイプ継承についての詳細な解説だけでなく、コーディングスタイルについての言及もあり、「JavaScript 版 プログラミング作法」と言っても過言では無いでしょう。

サンプルコードも多く、写経から得られるものは多いです。

プログラミングの本ではありませんが、 Web の仕事に携わる以上、ユーザビリティは、セクションに関係なく大事なトピックでしょう。

ユーザビリティについての考え方は、この本から学びました。「ユーザに考えさせない」という目標がいかに的確で、いかに難しいことか。

理論的な話だけでなく、スクリーンショットを用いた解説もあるので、とてもわかりやすいです。

「ユーザビリティの法則」を日本のモバイル Web に当てはめるとどうなるか、という実践的な書籍。

この書籍で紹介されているテクニックは、スマートフォンの普及とともに、消えゆく運命だとは思います。ですが、それらを実践することで身につく感覚は、 Web がどう変わろうと応用できるものだと思います。

すぐに適用できるテクニックも多く、とても実用的な 1 冊。

雑誌なので「1 冊」として挙げるのは変ですが、とても参考になっているので。

Linux の経験もほぼゼロだった私にとって、これぐらいの敷居の雑誌の存在は本当にありがたいです。ハッカー向けではありませんが、初心者から中級者ぐらいまでは十分に楽しめるんじゃないでしょうか。

シェルスクリプトについての紹介など、 Ubuntu に限らない特集も散りばめられており、楽しみながら Linux に親しむことができます。

タイトルから分かる通り、 Web の本ではありません。しかし、 Web エンジニアリングに携わる以上、アクセス解析やベンチマーク等、数字に対する感覚を磨くことは、避けて通れないでしょう。

世の中に溢れる、アンケートや統計などの様々な社会調査はほとんどがゴミである、というところから始まり、どうやればデータを批判的に読むことができるか、というテクニックが解説されています。

基本的に数式は出てこず、「いかに論理的にバイアスを見抜くか」といったところにフォーカスされています。独特な語り口を除けば、比較的平易に書かれていると思います。

これも Web の本ではありませんが、著者は技術系の書籍を多数執筆している、ジェラルド・ワインバーグです。

就活中、どこぞのコンサルタントが行う「問題解決セミナー」には胡散臭さを感じずにはいられませんでしたが、この本は本当に参考になったと思っています。問題という大問題を認識させてくれた 1 冊。

ストーリーを用いながらユーモラスに語られていますが、そこで語られているのは、問題解決者としての社会人にとって、とても大切なことばかりだと思います。問題は何なのか、それは誰の問題か、われわれは本当にそれを解きたいか ...

番外編: 今読んでいる 3 冊

ここからは現在進行形で読んでいるものの中で、特におもしろいものを紹介します。

ハードカバーで 800 ページ以上もあり、もはや鈍器。人は殺せそうな洋書。

内容は、 xUnit 系のフレームワークによる単体テストのパターン・アンチパターンの詳説です。デザインパターンのように、それぞれのパターンに名前が付けられているので、これが普及すれば技術的コミュニケーションの促進にも繋がるかもしれません。

また、英語それ自体の勉強よりは、英語で興味のある事柄を勉強する方が、モチベーション的には高く保てると思うので、英語の教材としてもオススメです。

通称エキ Py。私にとってはまだまだ敷居が高いので、つまみ食い的に読んでいます。

Python というプログラミング言語それ自体についてのみならず、テスト駆動開発、デザインパターン、パッケージの作成、開発手法など、かなり包括的に記述されています。これを読みきったら Python ハッカーになれる気がする、そんな 1 冊。

さくら VPS を契約したことと、業務でもインフラ的な仕事が増えそうなので購入。

私の場合は LAMP を中心としたソフトウェア/ミドルウェアについては仕事で関わるものの、ハードウェアについては直接関わることはほぼ皆無なので、知らないことだらけで、とても勉強になります。視野を広げてくれる 1 冊。

See also

WP Social Bookmarking Light にはてブボタンを対応させる

2010-11-26 00:02:02

新「はてなブックマークボタン」をリリースしました。 はてなブックマーク日記

Facebook や Twitter によく似たインターフェイスのボタンではてブできるようになったようなので、早速対応させてみました。

./wp-content/plugins/wp-social-bookmarking-light/wp-social-bookmarking-light.php に以下の関数を追加して、設定画面で Serviceshatena_button を加えるだけで OK です。

とりあえず表示できる、という程度なので、週末にでも微調整したいと思います。

See also

Ubuntu 上に IS01 の開発環境構築 #3 実機にデプロイ編

2010-11-23 21:45:28
  1. #1 Android SDK 編
  2. #2 PhoneGap 編
  3. #3 実機にデプロイ編

はじめに

前回と前々回は、普通に Ubutu 上での Android アプリ開発環境構築についての記事となりましたが、今回はいよいよ IS01 についてです。
前回はエミュレータ上でアプリを実行してみましたが、今回は同じことを IS01 実機上にて行います。

IS01 実機の準備

まずは、 IS01 の設定をデバッグモードに変更します。
デバッグモードといっても、通常のアプリを扱っている分には特に関係ないので、常に On でも問題なさそうです。

[caption id="attachment_803" align="aligncenter" width="300" caption="メニューから「設定」を選択する"]IS01 メニュー[/caption]

メニューから「設定」→「アプリケーション」へ進みます。

[caption id="attachment_807" align="aligncenter" width="300" caption="「提供元不明のアプリ」にチェック"]Configuration Screen[/caption]

「提供元不明のアプリ」にチェックを入れたら、同じ画面の「開発」という項目を選択します。

[caption id="attachment_810" align="aligncenter" width="300" caption="「USBデバッグ」にチェックを入れる"]Debug Mode[/caption]

これで、 IS01 上の設定は完了です。

Ubuntu PC の設定

ここでは、 Android SDK の中に含まれる adb (Android Debug Bridge) というコマンドを使用します。
Android SDK のインストールについては Android SDK 編をご覧ください。

IS01 を USB で Ubuntu PC に接続します。
特に設定を行なっていない状態だと、デバッグ用のデバイスとして上手く認識されません。

$ adb devices
List of devices attached
????????????	no permissions

これを上手く認識させるには、 /etc/udev/rules.d/51-android.rules というテキストファイルを作成し、以下のように記述します。

SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"

ただし、上記は IS01 用の設定なので、ご注意ください。
Ubuntu のバージョンや、 Android 端末の製造元によって書き換える必要があります。
詳しくは以下のページをご覧ください。
Developing on a Device Android Developers

念のため、全てのグループに読み込み権限を与えておきます。

sudo chmod a+r /etc/udev/rules.d/51-android.rules

これらが完了したら、 USB 接続をやり直し、再び以下のコマンドで、デバッグ用デバイスが認識されているか確認します。

$ adb devices
List of devices attached
SSHEX060626	device

上記のように出力されれば、設定は完了です。

IS01 実機へのデプロイ・実行

あとは、 PhoneGap 編で、エミュレータ上で実行したときと変わりません。
ただし、エミュレータは終了して、デバッグ端末は IS01 1 台のみ、という状態にしておきます。

PhoneGap アプリのあるディレクトリへ移動して、以下のコマンドを実行します。

$ ant debug install && adb logcat

上手くいけば、エミュレータのときと同様、メニューにアプリが追加されます。

[caption id="attachment_829" align="aligncenter" width="300" caption="メニューに example アプリが登録された"]example app is added.[/caption]

実行すると、以下のように表示されます。
これも、エミュレータのときと同様ですね。

[caption id="attachment_830" align="aligncenter" width="300" caption="example アプリを起動"]Executed example app.[/caption]

UUID の部分だけ隠しています。

そして、縦バージョン。

[caption id="attachment_831" align="aligncenter" width="150" caption="縦にしてみる"]Rotated Ver.[/caption]

まとめ

というわけで、全 3 回で、 Ubuntu 上に IS01 の開発環境を構築する方法について紹介してきました。
ここまでできれば、あとは HTML, CSS, JavaScript を駆使して、アプリの開発が楽しめることでしょう。

このブログでも、引き続き Android アプリの開発について書いていく予定です。
今回は PhoneGap の紹介になりましたが、使ってみておもしろければ Titanium 等の類似フレームワークについても紹介していければと思っています。

個人的には、今回初めて Android アプリをさわってみて、 HTML5 や CSS3 について興味を持てたことも面白かったです。
HTML や CSS を書く機会が普段あまり無いので、いい機会になりました。

本格的なアプリを作る場合は、 Java や Objective-C でゴリゴリ書いていくのがいい場合もあるでしょう。
しかし、スマートフォンアプリはほとんどがアイディアの勝負だと思うので、こういった間口の広い環境があるのは素晴らしいことだとおもいます。
プログラムを書いたことがある人も無い人も、楽しくアプリ開発しましょう !

See also