2010年1月11日月曜日

一年の計は元旦にありと言うけれど・・・

今年は見事な寝正月でした。なぜなら元旦から38度オーバーの熱を叩き出して寝込んでいたからです。

実を言うと、ここ数年間の年末年始を振り返ってみると、一年毎に体調を崩してしまっているのが分かります。

今年 (社会人2年目) 高熱
一昨年(大学院2年生) インフルエンザ
4年前(学部4年生)  インフルエンザ

こうして見てみると、なにやら大きなイベントのある節目の年に決まって、やや重めの病気をしてしまう癖がありそうですね。(そういえば、高校入試の当日も高熱にうなされながら試験を受けていた記憶があります。)

今年も4月からは社会人3年目に突入するわけですけども、早くも波乱の年を予感させてくれています。
ひょっとしたら大変な年になるかもしれませんけど、めげずに頑張ります。



そんな話。

2009年2月12日木曜日

Webデベロッパの祭典@東京に行ってきた

2月7日(土)に開催されたWebデベロッパの祭典@東京に行ってきました。
自分が参加したセッションは以下の3つ。内容を簡単にまとめときます。

・どうするデベロッパ!?2009年プログラミング大展望
 小飼 弾 氏

不況の時代にソフトウェアエンジニアはどう生きるか、という話。
晴耕雨読という言葉がキーワードでした。
去年までは好況だったのでガリガリ仕事をしてお金を稼ぐのが良かったけど(晴耕)、今年からは好況のときほど仕事がこないはずなので、浮いた時間を自分の知恵を蓄えるために当てた方が良い(雨読)。
理想はサラリーのための仕事は20%程度で片付け、残りの80%を自分の好きなことや勉強したいことに費やすこと。
そうして蓄えた知恵は好・不況に関わらず無くなったりすることはないので、着実に自分の財産になる。

かなり乱暴な要約だけど、主旨としてはこんな感じだったと思います。
自分の場合、さすがに20%の時間では仕事は片付きませんけど、少しでも空いた時間を使って色々勉強できれば、と思います。今、自分がやってることはそんなに間違ってるわけじゃないな、と確認できました。


・次世代Web Platformのために−Java技術動向と関連テクノロジーのご紹介−
 舟崎 健治 氏

仕事でJavaを使ってるので参加してみました。
最近のJava関連のテクノロジーに関してあれこれ。初めて聞く話もちらほらあったので参考になりました。GlassFishとかね。機会があったら触ってみたいと思います。


・Webエンジニアの視点〜開発現場からの視点で〜
 高橋 征義 氏

高橋メソッドの人。
初めて高橋メソッドでのプレゼンを生で見れて、個人的にはそのことだけで結構テンション上がってました。
内容は1990年代後半から今日に至までのWeb技術の変遷と、Webアプリケーションを業務システムとメディア、受託開発と自社開発という属性で2×2のマトリックスを作り、4種類に分類するという話。最後にWebエンジニアのスタンスというか心構えはどうするべきか、という形でまとめられていました。
1枚のスライドが大体数秒〜十数秒で切り替わるので、メモをとるのが結構大変でした・・・。


技術の最先端を走っている人の話というのは良い刺激になるし、勉強になりますね。今後もこういったイベントがあったら参加してみたいです。

技術評論社のサイトでも紹介されています。自分が参加しなかったパネルディスカッションについて詳しくレポートされてるみたいです。

2009年1月30日金曜日

schemeでラムダ式をちょろっと勉強する

最近ちょこちょこschemeの勉強をしてる。
以下のコードなんだけど。

リスト ls から指定した値 x を除去する関数 remove-x

(define (remove-x x ls)
(if (null? ls)
'()
(let ((h (car ls))) ; ls のheadの値をhに束縛
(if (eqv? x h) ; 引数xとhは同じ値か?
(remove-x x (cdr ls)) ; 同じならlsのtailを引数にして再帰
(cons h (remove-x x (cdr ls))) ; 違うならhを再帰処理の結果と結合する
))))

上の例だと再帰関数であるremove-xを,if文の結果がtrueのときとfalseのときとで2回書く必要がある。これをラムダ式を使うと、以下のように書き換えることができる。

(define (remove-x x ls)
(if (null? ls)
'()
(let ((h (car ls)))
((if (eqv? x h)
(lambda (y) y)
(lambda (y) (cons h y)))
(remove-x x (cdr ls)) ;; ラムダ関数の引数yに束縛する関数
))))

こう書くことで (remove-x x (cdr ls)) がラムダ関数の手続き中の変数 y のところで展開され、処理としては最初に示したコードと同じになる。再帰関数の記述の箇所が1箇所で済むようになった。

ラムダ式、おもしろっ。

schemeのレキシカルクロージャとかラムダ式とかが何となく分かった気がしてくると、これまで今いち掴めなかったJavasScriptについても何だか腑に落ちてきた気がする。anonymous関数とかね。

2009年1月12日月曜日

年末の電気屋にて

会社の同期が最近流行りのネットブックを見たいってんで、秋葉原のヨドバシカメラへ

ネットブックのコーナーへ行ってみると、まあ知らない間にいろんなメーカーから出てること出てること。
こっちに出てくる前にPCが壊れて急場しのぎで初代EeePCを買った訳だけど、今更ながらにもう少し様子を見れば良かったって思ったりする。
後の祭りだけどね。

EeePCだけ見ても、
こんなんとか、http://eeepc.asus.com/jp/products101-spec.html
こんなんとか、http://eeepc.asus.com/jp/product1000h.html?n=0

S101など結構良い感じっすね。軽いし。お洒落だし。キーボードも初代に比べて打ちやすいし。ちなみに同期はS101をご購入されたようです。

でも多分今使ってるEeePCが壊れたら、次はiPhone 3Gあたりになると思います。ぶっちゃけ、何のためにネットブック持ってるかって言ったら、主に帰省したときのWebブラウズ用ですから。PCである必要も実はあまりないのです。



そんな話。

2008年12月23日火曜日

Macのアンチウィルスソフトについて

Macのアンチウィルスソフトとして、今まではClamXavを使っていたが、今回iAntiVirus(http://www.iantivirus.com/)なるものに乗り換えてみた。
UIが分かりやすく作られており、インストール、アンインストールも簡単に行える。ウィルス定義ファイルの自動アップデートや定期スキャン、常駐保護等のアンチウィルスソフトが持つべき基本的な機能が備えられており、導入から利用までが簡単にできるってことで良い感じだと思う。

このソフトの評価や感想について色々検索してるいると、気になる記事を見かけた。

追記:コメントで教えていただいたのですが、TimeMachineでバックアップがうまくできなくなる不具合があるようです。TimeMachineのバックアップが失敗してしまう方は疑ってみると、いいかも知れません。

パワフルなウィルス除去ソフト『iAntiVirus』 | Macの手書き説明書より引用】


しかし、サポート掲示板をチェックしてみると最新の1.2版では上記の問題は修正されているようだ。
実際に自分の環境でもiAntiVirusを導入しているが、TimeMachine及びTimeCapsuleは問題なく動作している。

2008年12月15日月曜日

TimeCapsuleを導入した。

さーて久々にブログでも更新してみるか、って思ってみたら最後の更新からもう3ヶ月経とうとしてるじゃないですか。
もう少し、頑張ろうか。


自宅に無線LAN環境が欲しかったのと、データのバックアップとか、サブPCとのファイル共有とかがやりたかったのでTimeCapsuleを導入した。その際にあれこれしたことを備忘のために残しておく。

■初期設定
ネットワークの設定はラクチン。
勝手にTimeCapsuleの設定ウィザードが立ち上がるので、言われるがまま入力していくだけ。

■TimeMachineでバックアップ
最初のバックアップはPC内のデータを全部(60Gほどあった。)転送するため、一晩中PCの電源をつけっぱなしにするはめに。ただ、翌日会社で同期に「そんときだけ有線にすれば良かったのに」って突っ込まれた。確かにその通りだと思った。

■ファイル共有
サブPCであるEeePC(xubuntu)とのファイル共有。ここで若干手こずった。以下、その手順。
まず、TimeCapsuleの設定を少し変更する。
・Application → ユーティリティ → AirMacユーティリティを起動
・手動設定を選択 → 上側の「ディスク」アイコンを選択 → 「ファイル共有」のセキュリティ保護の「アカウント」を選択
・アカウント作成(ユーザ名、パスワード、アクセス権限の設定)

EeePC(xubuntu)側の設定

[smbfsをインストール]
$ sudo apt-get update
$ sudo apt-get install smbfs

[マウント]
$ sudo smbmount //<IP>/<Remote Directory> /<Local Directory> -o username=<yourname>,iocharset=utf8

[備忘録] Time CapsuleのディスクをLinux (Ubuntu)でマウントする方法 « 爽やか日記より引用】


これでTimeCapsuleのデータにEeePCからアクセスできるようになった。
ところが・・・
TimeCapsuleのアクセスの方式を変更してしまったがために、最初に作ったTimeMachineのバックアップデータにアクセスできなくなっちまったよ。orz

仕方ないのでTimeMachine用のアカウントを設定し、再びバックアップデータを作り直した。

2008年9月28日日曜日

達人プログラマーを読んだ。

1ヶ月ちょいほど、放置してました。
何となく気が向いたので放置してたネタをここいらで投稿してみる。


おっそろしく前の話になりますが、達人プログラマーを読みました。やたら読むのに時間がかかっちゃったけど、英語を翻訳して書いた日本語と、日本人が書いた日本語じゃ、読みやすさはやっぱ違うよね。じゃあ、原文を読めっつー話になるかもしれませんが、私にそこまでの英語力はない。

内容としては、システム開発の仕事を行っていく中での、いろいろなシーンにおけるノウハウ集といったもの。
かなり納得できる話もあったり、未経験故に今いちピンとこなかった話もあったけど、著者の方が全編通して強く主張していたことは次のこと。

・知識の二重化をしないこと。(DRY原則)

似たような処理は共通化してまとめた方が、構造としてきれいになるという話は、大学などでプログラムを勉強してる人にしてみれば、当たり前のことと思う。しかし、ここで二重化すべきでない知識とは、ソースコードに限らず、そのドキュメント等をも含めたものであった。

先日、仕事で実装とドキュメントの整合性がとられていないことによる弊害をもろに受けたばかりなので、この話はすごく参考になる。
大抵のIT企業がそうだと思うけど、うちの会社はドキュメント類はMicrosoft Officeで作成するのが主流だ。よって、作業プロセス的に実装とドキュメントの整合性がとれなくなるっていうリスクはどうしても含んじゃうんだよね。

本書で紹介されてるやり方を職場で実践できれば良いのかもしれないけど、できるかなぁ。