rubyの過去記事

Posted in Web, rails, ruby at 14:44:27 by ジュンヤ

フリーランスとして働き始め、もうすぐ2年になろうとしています。

企業が会社案内のホームページを持つように、僕もこのブログとは別にホームページを作るべきだったのですが、やろうやろうと思いつつ、あまり乗り気がせず、そのままにしていました。

この夏体調を少し崩していた間、自分はいったい何をやりたいのか、など見つめ直す時間がありました。良い機会なので、その間に考えたことなどを反映させ、Ruby on Rails でコーポレートサイトっぽいもの(個人事業主なのでコーポレートではありませんが。。)を作ってみました。

» Champierre(シャンピエール) - ミッション

デザインは超シンプルでショボショボですが、機能的には結構満足いくものができたので、ポイントを簡単にですが以下にまとめておきます。

1. Ruby on Rails で作る

静的ページばかりだから HTML ベタ書きでもいいんじゃないかという気がしますが、ヘッダーやフッターなどどのページにも同じく表示されなくてはいけないパーツがあったり、ひとつのページのなかでも繰り返し登場する部分があったりするので、動的にページを作成できるようにしました。それが可能ならば、言語やフレームワークはなんでもいい、自分が得意なものを選んで使えばいいと思います。

Ruby on Rails、あるいはほかの言語 + フレームワークを習得中であれば、今後自分が一番良く使い、見ることになるホームページをその道具を使って作ってみるのが良いと思います。

2. Active Scaffold で管理画面を作成

サイトを作ったはいいけれども、更新されずに放置されてしまうというのが結構ありがちなパターン。そうならないよう、手軽に更新できる仕組みを作りました。

Page というモデルを作り、1ページを1オブジェクトに対応させて作ったので、ページ追加も編集もDBのデータをいじるだけ。管理画面は僕しかさわらないので、ActiveScaffoldを使ってサクッと作りました。

active_scaffold.png

管理画面には僕だけがアクセスできるよう、Rails 2.0 から手軽に実装できるようになったBasic認証と、アクセス元のIPアドレスをチェックするようにして、アクセス制限を設けました。

3. お問い合わせフォーム

» Champierre(シャンピエール) - お問い合わせ

メールアドレスを表示するだけでもよかったのですが、せっかくなので ActionMailer を使ってお問い合わせフォームを実装。この手軽さは Rails ならではかもしれません。

4. キャッシュ

動的にページ作成といっても、僕が管理画面で変更したあとはずっと同じページを表示するだけ。表示するたびにページを作成するとその分反応が遅くなってしまうので、Rails のページキャッシュの仕組みを使ってほぼすべてのページをキャッシュしました。

5. Capistrano で簡単デプロイ

繰り返しになりますが、サイトはいかに更新がしやすいかが大事だと思っています。コンテンツは管理画面から簡単に更新できるようにしましたが、そのほかの部分でもちょっとした修正や機能追加をしたいな、と思ったとき、少しでも手間がかかるとそれがおっくうになってしまいます。

FTPサーバーから該当ページのHTMLファイルをダウンロードしてきて、ローカルで修正、FTPサーバーにアップロードして戻す、という作業は数分でできますが、その数分が結構面倒に思えてきてしまいます。

Capistranoを使うことで、ローカルの開発環境で修正、動作確認、その後コマンド一発で変更を本番環境に反映させることができます。この便利さを知ったあとでは、Subversionによるバージョン管理とCapistranoを使ったデプロイなしの開発には戻れません。

以上、同じような簡単なサイトをサッと作りたいときに参考にしていただければ。。。


Webカテゴリの最近の記事             

Posted in ruby at 15:50:45 by ジュンヤ

Ruby会議のとき、勢いで申し込んでしまったRuby技術者認定試験を受けてきました。

結果合格でホッとしてます。(合格してなければ受けたことを内緒にしてます :-))

Rails Rails 言っていてそれで食っているわけだし、試験代は馬鹿にならないし、土日は家族ほっといて試験対策にあてたしで、当然合格しないとっていうプレッシャーをちょっと感じていました。テストらしいテストは、確か五年くらい前にアメリカで CBT の TOEFL を受けた以来久々で、なんか懐かしい緊張感でした。

よく、こんな試験や資格に意味はない、という人がいますが、僕はそうは思わないです。確かに資格持ってるから良いコードが書けるか、優秀な技術者かというと必ずしもそういうわけではないですが、Ruby のコードが書けるちゃんとした技術者ならば、きちんと対策さえすれば認定試験に合格するのはわけないのです。つまり、この資格を持っていればかなりの高い確度で Ruby をきちんと使える技術者だ、と言えるわけで、その人のコードを実際に読んで判断できない場合には、結構妥当な指標になると思います。

また、受ける僕側のメリットとしては、試験対策をすることで Ruby の良い復習になったし、普段はわからなくてもいちいち調べていたリファレンスの内容を頭に無理矢理叩き込む機会ができた、というのがあります。

その対策方法ですが、Ruby会議で申し込んだときにいただいた模擬試験(内容は以下 ITpro の記事と同じ)

» [1] まつもと ゆきひろのRuby検定:ITpro

それと、NaCL による対策問題

» [2] Ruby認定試験対策問題

» [3] Ruby認定試験対策問題(総合問題 No.1)

をやりました。

実際の問題は [1] と [3] に近い感じです。[2] の後半はやや難しく、僕はこれをやったあと「大丈夫だろうか」とちょっとあせりました。

だいたいどんな試験がでるかイメージがつかめたあとは、すでに合格している人から聞いたアドバイスに従い、たのしいRuby 第2版 Rubyではじめる気軽なプログラミング をひっぱりだしてきて Array Hash String を重点的に復習。

入門書だけじゃ心配だったので、ピッケル本の英語版を以下より閲覧、Built-in Classes and Methods の章の Array Hash String と Enumerable を頭にたたきこみました。

» Programming Ruby

Array Hash String からの出題が多く、これらをきちんと把握しておけば合格点に到達できる感じですが、余裕をもって望みたいなら、正規表現とあと僕のように普段 Rails を触るのが中心という人にとって意外と穴なのがIOクラスまわり(ファイル入出力とかあまりやらないので)、このあたりをフォローしておくといいと思います。

試験時間の90分は十分余裕があり、50分くらいで一通り回答、20分くらいを見直しにあてました。自信もって「これは間違いないだろう」と思える問題以外は、見直しマークをつけておき、あとで見直し。これが僕の場合10問近くありました。

見直すときですが、どちらが正解かがわからず迷った場合には、最初に回答するときに勘で正解と思った方を直さずそのままでいく、という戦略をとりました。この戦略はひとによってまちまちで、あとに考えこんで正解と思った方でいくとか、いろいろあると思いますが、一貫してこれでいく、という戦略をあらかじめ自分のなかで決めておくことが大事だと思います。戦略を決めておけば、他の問題に移ったときに、迷って回答した問題が頭に残ってしまって集中できないという状況を防ぐことができます。

なんて、えらそうに以前から僕がそうしているように書いていますが、今日受けてそうすればよかった、という反省をこめて書いています。


rubyカテゴリの最近の記事             

Posted in ruby at 10:14:06 by ジュンヤ

RubyKaigi 2008 に参加してきました。

初めての参加だったのですが、運営の素晴らしさに驚きました。あれがボランティアでの運営とは。。。いままでいくつかコンベンション、カンファレンスという類いのイベントに参加したことがありましたが、Ruby に思い入れが強いということを差し引いても、参加したあとの満足感では僕の中ではダントツでした。スタッフの方々、そしてスピーカーの方々、関わったすべての方に感謝したいと思います。

以下、感想をつらつらと列挙していきたいと思います。

  • 重ねて書きますが、ほとんどまったくといいほど滞りなく進められていた運営が素晴らしい。プロ顔負け。いや、むしろプロが運営するものの上を行っている気がします。Ruby がオープンソースでまつもとさんと有志のプログラマーというボランティアといっていい人たちの力でここまで育て上げられたことと重なります。「好き」とか「楽しい」と思えることに注がれた力が、ときに「お金」の力を上回る、ということを目の当たりにしました。
  • Ruby のコミッターの方々の技術的な話、難しい。でも、皆さん、本当に Ruby が好きで好きでしょうがないのですね。技術を深く理解するにはそれ相応にどっぷりとその事象にはまりこみ時間をかけなくてはいけないから、「好き」度合いがものすごく強くなくてはできない。Rails から入り、最終的な成果物であるアプリの方でどんなことができるかに専ら興味がある僕にはとても真似できないのですが、アプリ側の者としてできる限りの貢献をしていけたらなあ、と感じました。
  • JRuby、一度チャレンジしたことがあるのですが、本番環境でのデプロイでつまずいたことがあります。でも Charles Nutter/Thomas Enebo 氏によるセッションのデモではサクッと動いていました。GlassFish gem を使うと簡単そうです。再チャレンジするかな。。
  • Ruby M17N、文字コードの話は複雑怪奇ですね。アメリカで I18N や L10N の仕事をしていたときの苦労を思い出しました。
  • 仕事でもお世話になっている yuum3 さんの教育に関するセッション。テストコードを事前に用意し、それが通るようにコードを書かせるという教育方法は、「なるほどー」と思いました。会場の皆さんの多くもそう思っていたようです。
  • 「会場の皆さんの多くもそう思っていたようです。」ってなんでわかるかというと、IRC チャットでの発言内容が大スクリーン横の小スクリーンに表示されることで、擬似的にではありますが会場にいる人の思いが共有できていたから。この仕組みは初めて実際に見たのですが、とても面白い。
  • Lightning Talks も初めて実際に見たのですが、これも面白いですね。そして皆さんプレゼンが上手。勉強会などで場数をこなしているからなのと、やっぱり発表しているテーマそのものが好きだからなのでしょうね。僕も次は参加したいな。
  • Ruby 技術者認定試験。僕はリファレンスをちょこちょこと見ながら開発していくタイプですが、何度も同じ部分を忘れては見返しているということがあります。そういうところは暗記してしまうに越したことはないのですが、なかなかそういう気になれない。というわけで、自分を追い込むために認定試験を受験することを決意して、RubyKaigi の会場で申し込めばもらえる特典のマグカップをゲットしました。勉強しなくちゃ。。
  • MacRuby 楽しそう。まずは RubyCocoa で何か作ってみるかな。。
  • 会議中いろいろとお世話になった高井さん大場光一郎さんのセッション。漫才プレゼンがあまりにおかし過ぎて、内容が良く思い出せない :-) インパクトが強すぎるコマーシャルは何の商品に関する宣伝だったか覚えてもらえない、というのと同じ現象か。。実際に会場で聞いていた人で、僕と同じって人もいるでしょうが、技評の記事でニコニコ動画が見られるので復習にどうぞ。便利な時代です。
  • アプリ側の人間としては iKnow と食べログの話が非常に興味深かったです。もっと Rails での事例が増えるといいですね。
  • あとで行くでも使わせていただいているJpmobile。個人的にもっとも応援したいプロジェクトです。応援するには、もっともっと使って、フィードバックを返さないと。。チャットでちょっと話をしたことがあるdara さんと直接お会いすることができました。まだ学生さんのさわやかな好青年。がんばってほしいです。
  • 会議中にお会いしたあの人もこの人も執筆しているまるごと Ruby!を購入。もりだくさんでお買い得です。いま一生懸命読んでます。

会議中たくさんの方々と出会い、充実し過ぎていてもう書ききれないです。

来年もぜひぜひ参加したい。


rubyカテゴリの最近の記事             

Posted in Web, ruby at 14:14:07 by ジュンヤ

「WEBrickの非公開ファイルにアクセスされる脆弱性」を確認する機会があったので以下のエントリーを書きました。

» On the Rails 「WEBrickの非公開ファイルにアクセスされる脆弱性」を実際に確認してみた


Webカテゴリの最近の記事