Tenjinテンプレートエンジンで快適Web制作4
IWDD41で発表したTenjinテンプレートエンジンで快適Web制作3の続きエントリーです。
画像ファイルが沢山あるページの場合、srcやaltをそのままhtmlの中に書いても良いですが、yamlファイルで管理したりすると便利かも。
Tenjinテンプレートエンジンで快適Web制作3
IWDD41で発表したTenjinテンプレートエンジンで快適Web制作2の続きエントリーです。
Webサイトの原稿をもらうときに、ワードだったり、エクセルだったりすることがあるかと思いますが(><)、今回はエクセルファイルから直接ページを作ってみます。
まず、エクセルでこんなシートを作ります。シート名は「page1」、ファイル名は「data.xls」にしておきます。これがページの原稿になります。
data.xls
RubyのSpreadSheetライブラリを使って、エクセルのデータを直接読み込んでテンプレートの中に展開します。
Tenjinテンプレートエンジンで快適Web制作2
IWDD41で発表したTenjinテンプレートエンジンで快適Web制作の続きエントリーです。
TenjinをCGIから使う基本的な環境が出来たら、「header.html/body.html/footer.html」のパーツごとに分けてみます。
分割されたテンプレートファイルを読み込むには
<?rb import 'filename' ?>
を使います。
Tenjinテンプレートエンジンで快適Web制作
IWDD41で「Tenjinテンプレートエンジンで快適Web制作」として発表してきました。
VGAアダプタを忘れてプロジェクタに映せなかったので(><)、blogにコードを貼ってみます。
素のHTMLを何ページも手書きしたくない、CMSを入れる程でもない、DreamWeaverテンプレートでは物足りない。 デザイナーでもテンプレートエンジンを使いこなしたい。Rubyを使いたい。そんな人にお勧めです。
今年はもっとRubyを勉強しようと思っているので、Ruby用のrbTenjinを使ってデモを書きました。
IWDDで発表した内容は
- 基本的なTenjinの使い方
- ヘッダ、本文、フッタの3ファイルに分ける方法
- エクセルファイルからデータを読み込んでHTMLページ生成
- YAMLファイルからデータを読み込んでHTMLページ生成
- CGIのパラメータを受け取ってページの内容を変える
基本的なTenjinの使い方
テンプレートファイルの中で
- ${...}と書けばrubyの式を評価した結果が入る(HTMLエスケープ有り)
- #{...}と書けばrubyの式を評価した結果が入る(HTMLエスケープ無し)
- <?rb ... ?>でrubyの文を埋め込める
IWDD34でIE8とWindows7について学んだ
IWDD34でIE8について勉強してきました。すでにWindowsUpdateでもIE8の配布が始まっているので、ブラウザシェアもどんどん伸びてきています。制作者側が覚えておく事として以下の機能と使い方を、msdnのIE8の項目やIE8インデックスを確認しつつ、一つずつデモしながら学びました。
- ブラウザの新機能
- HTMLとCSS
- Doctypeスイッチ
- METAスイッチ
- 互換性表示ボタン
- レンダリングモード
- CSS2.1対応
- 印刷用CSS
- 開発者ツール
ちなみに、今回のデモ環境は、先日発表されたWindows7 RCのIE8を早速使ってみました。
WindowsXPでもWindowsVistaでもIE8は使うことができますが、せっかくなので最新の環境で確認です。Vista+IE7+メイリオだと中途半端にClearTypeがかかって英数と日本語とで綺麗に表示されない事があるんだけど、Windows7+IE8+メイリオではClearTypeの仕様が変わったのか、なかなか綺麗に表示されるような気がします。
レンダリングモードとDoctypeと対応CSS
ZDNetのIE8の記事を一つずつ検証しながら理解し、IE8の挙動を確認していきました。
印刷関連のCSSは一見して見えないところだけど、ぜひ対応していきたいところです。
Webスライス
Webスライスは、マイクロソフトが定義してIE8に実装した一種のmicroformatsと考えることができると思いますが、既存のサイトで対応するには指定のclass名を付ければOKだったりと、比較的そのままの開発状況で対応することが出来るので、積極的に対応していっても良いと思います。詳しくはWebスライスの仕様書にて確認。
実装のテストとしてIWDDの公式サイトのTOPページを、Webスライスに対応させるデモをその場でしてみました。
Apacheのログを見ると、IE8がWebスライスを含んだページ見に来て、ページ全体をGETしているようです。WebスライスのUser-Agentは「Windows-RSS-Platform/2.0 (MSIE 8.0; Windows NT 6.1)」のUAで見に来るようです(Windows7の場合)。WebスライスにTTLで有効期限を設定できるのが便利かも。
開発者用ツール
IE7ではアドオンという形でDeveloperToolを入れることが出来ていましたが、IE8では標準で最初から組み込まれています。便利ですねー。FirefoxのFirebugと同じようなことが出来るんだけど、CSSの一つ一つのプロパティをチェックボックスでON/OFF出来るところが便利そうです。CSSの一つをOFFにすると、それに合わせてspecificityも全て計算して表示し直してくれるのも良いです。
アクセシビリティ
IE8はARIAマークアップにも対応してると書いてあるけど、どのくらい対応しているのかは未検証。ThinkITにもIE8のARIAの特集ページが。
抹茶生クリーム大福を食べながらセキュリティの勉強
IWDD#33の「門外不出のセキュリティー勉強会」で話をしました。IWDDでは初めてのセキュリティーネタということで、なかなか良い煽りタイトルになったと思います。初参加や久しぶりの参加の方も多く集まりました。とりあえず私がモデレーターとして話をしましたが、他にもセキュリティ関係を気にして見てる人はいないのかな?
まず最初に、「アクセス権限のないコンピューターのパスワード等を解析しようとしたり攻撃しようとしたりする行為は、不正アクセス禁止法、あるいはその他の法律で処罰の対象となる可能性があります。今日はそのような行為から自分のPC等を守る為に必要な技術や防御措置とかを勉強します。勉強会では不正アクセスを助長していませんよ。」というのをみんなで再確認。お約束おやくそく。
IPAの情報セキュリティ白書でここ数年の傾向を振り返った後、その中のトピックについて説明&デモ。
また、SecurityFocusなどの脆弱性情報が集まるサイトを見ながら、実際に仮想環境で再現実験をしたり、カスペルスキーが反応する様子を見たり、TripWireやSnortやWiresharkやNessusなどの各種ツールを動かしてみたり。JPCERT/CCのサイトを確認したり。
内外部からの侵入やウィルス感染への対応など、すべき事はたくさんあるけど、今日から個人的にも出来ることは、きちんとセキュリティパッチを当て続け、PCの中に保存する情報は暗号化ボリューム等に保存して、利用する通信経路を暗号化しておく事でしょうか。Windows系OSを使っている人は、パスワードは15文字以上にしておいた方がいいと思います。
Web制作の現場では、まだまだ素のFTPを使ってファイル転送をしている人が多いような気がしますが、FTPSやSFTPなどの暗号化された経路を今すぐ使うべきです。レンタルサーバーでも対応しているところが増えています。SMTPやPOP3もSSL/TLSでの暗号化をすべきで、暗号化出来るところはすべて暗号化してしまいましょう。
PCの中に保存するデータはTrueCryptやMacならDiskUtility.appを使って、暗号化ボリュームの中に保存しておくと、PCが物理的な盗難に遭っても少しは安心できますね。プログラミングをする人は、それぞれの分野に応じて脆弱性を組み込まないように気をつけましょう。一番弱いのは人でしょうか。
そうそう、今回のおやつは「抹茶生クリーム大福」、「手作りリンゴジャム&パン&ヨーグルト」、「ポッキー」でした。おいしゅうございました♪

今週末はIWDDで門外不出のセキュリティ勉強会
今週末(4/11 14時〜)はIWDD#33が開催されます。
その中で私がセキュリティーについて話をする予定です。これは門外不出ですね。危ないです。参加した人だけです。攻撃方法と防御方法の両方やる予定です。
- 何を守りますか?
- ぜいじゃくせい
- パスワード
- ウィルス・ワーム・スパイウェア・トロイ
- ネットワーク盗聴
- ソーシャルエンジニアリング
- バッファオーバーフロー
- SQLインジェクション
- XSS
- 侵入検知
- インシデント対応
- 暗号化
- PKI・電子署名
- 個人情報保護法
- Windowsを覗く
- Linuxを覗く
- Macを覗く
- Winny
とかについて盛り沢山やりたいと思います。ウィルスお持ちの方はご持参ください。
勉強会はOSS(オープンソース・ソフトウェア)と同じ
TDCの1周年記念カンファレンスで行われたパネルディスカッションに参加してきました。
パネルの参加者は向かって右から、杉山さん、吉岡さん、小泉さん、片平さん、鈴木、武田さん。最初に各コミュニティーの自己紹介をした後、杉山さんの進行するお題に沿って話す形式でした。
当日自分がどんなことを話したのかよく覚えてないのですが、できるだけ多くの人に「参加すると良いよ!」さらに「自分が勉強会をする立場になるともっと面白いよ!」と呼びかけたつもりです。パネリストとして参加した人達の、東北を盛り上げていきたいという思いが伝わればと思います。
今回も様々な人に出会うことができ、とても楽しかったです♪
Ustから自分の話を起こしてみると
問:なぜ勉強会を始めたのか?
僕の記憶では... 僕は3年前に岩手にUターンして帰ってきたんだけど、その時に岩手のWeb関係について右も左も全然知らなかったので、地元で活躍しているsasahiraさんと101さんに「岩手のこと教えて下さいー」と聞きに行ったのがきっかけのような気がします。そこで「集まりたいよねー」という話になって、IWDDが始まったんだと記憶しています。
sasahiraさんと101さんに「鈴木が岩手に帰ってきたんですけど!」みたいな変なメールを送ったのが最初だと思いますですはい。
問:得られた事・苦労した事
得られたことは、こうした人脈が広がるということですね。Uターンして右も左も分からずに岩手に来て、IWDDを続けることによって広がる友達の輪っていうのが一番ですね。苦労したことは... 無いですね。というか、苦労しそうなことはやらないようにしています。あえて言えば、(地理や時間的な制約もあって)行きたいけど行けない勉強会が増えてきたという(嬉しい悲鳴)でしょうか
勉強会を開催するのにすごく費用がかかったり、スポンサー集めに走り回ったり、日時や会場の調整を繰り返したり、講師を呼ぶためのいろいろな手配をしたり。やりたい本質は「勉強会」そのものであって、「勉強会の運営」をやりたい訳では無いので、できるだけ開催のための資金的・時間的・人月的コストはかけないようにしています。そのあたりはITをうまく使って省力化してやっていければと思います。
問:勉強会の幅について
IWDDでは勉強会のお題を「この人にこの話を聞きたい」というご指名制と、「自分がこの話をしたい」という立候補制の2パターンがあります。その他にも「自分がこの分野を勉強したいから、自分自身を指名する」というのもあります。やはり「人」で成り立っているので、その分野をやりたい人がいなければ、その分野の幅は広がらないという点はありますね。
IWDDでは「Java」と「セキュリティー」については本格的にはまだ一度もやっていないのですが、やはりそれをやっている(やってみたい)人が少ないからではないかと思います。だからと言って、その分野をやらないわけではなくて、それを面白いと思っていてお題を話す人がいれば、いつでもテーマになり得ます。
会場でまっちゃだいふくさんにお会いしたので、セキュリティー関係は盛り上がっていきそうな予感がします。

問:なぜ運営してるんですか?
「楽しいから」につきますね。以上です。
問:会場の皆さんにメッセージ
二人集まれば、もうそれで勉強会ですから、やりたいことをどんどんやっていくと良いと思います。
懇親会に「Perl使っていてCPAN Authorなんだけど何か始めたいなぁ」という方がいましたので、ぜひ是非Sendai.pmを!とハッパをかけて来ました。東北にはPerl系の集まりって聞かないので、ぜひ始めてみると良いと思います。そんな感じでRuby青森も始まった経緯があるので。
問:盛り上げるためにやっているTIPSとかはありますか?
勉強会の当日はできるだけ若者や、女性の参加者を集めようとしたりしています。勉強会を開催する前の普段はTwitterやIRCやMLやBlogでコミュニケーションを続けています。
他にはポジションペーパーを導入して全員が1回は発言したり予習をするようにしたり、アンケートをとってみたりもしています。IWDDハッカソンの時は、一人300円以内(バナナは除く)でお菓子の持ち寄りをしました。他にもTIPSがいろいろとありそうですね。
勉強会はOSS(オープンソース・ソフトウェア)と同じ
パネルの中では時間が限られているので、突っ込んだ話までは進まないんだけど、その後の懇親会で吉岡さんに話してみて、自分の中で確証したのは、今行われている勉強会はオープンソース活動と同じだということです。
いろんな考え方があると思うんだけど、(有料)セミナーという形式が「プロプライエタリ」なソフトウェアだとしたら、僕たちがやっている勉強会は「オープンソース」のソフトウェア開発そのものだと思っています。OSSも好きだから始めるし、必要だから作るし、自分達が使うために作るし、楽しいから続くし、必要であればフォークしたりマージしたり、どんどんコミットしたり。
今、日本全国で行われている「勉強会」はまさにOSSの開発モデルそのもので、OSSの考え方や開発運営手法が勉強会開催手法に応用出来ると思っている。小さいうちはそれぞれのルールで進めて行く方がスピードが速くてエキサイティングだと思うし、Linux KernelやFreeBSDのように大規模になったら、それこそ選挙制とかチーフコミッタ−制とか、権限と役割を分けていくことも必要になっていくのも同じ。
オープンソースに理解のある会社の中の人は、勉強会にどんどん出てくるし、OSSへの理解の少なそうな会社の人は、勉強会に出てこないっていうのも、モデルとして良く似てると思う。
地方におけるコミュニティ活動 - パネルディスカッション
明後日、3/4(木)に仙台メディアテークで開催されるTDC設立1周年カンファレンスにて、「地方におけるコミュニティー活動」というお題で、パネルディスカッションが行われます。私もIWDDの一人として参加してきます。
パネルのメンバーは
「勉強会勉強会」から吉岡さん
http://blog.miraclelinux.com/yume/2008/11/post-535c.html山形の「わにる」から武田さん
http://blog.takeda-soft.jp/blog/show/304仙台の「Rails勉強会@東北」から片平さん
http://d.hatena.ne.jp/yuichi_katahira/20090223/1235399305仙台の「TDC」から小泉さん
http://d.hatena.ne.jp/zoom1/20090130/1233271624九州の「天神・大名WiFi化協議会」から杉山さん
http://onbandiary.cocolog-nifty.com/taka/2008/08/wanirjp_aee2.html岩手の「IWDD」から鈴木
http://iwdd.net/about/
が参加します。
東北にも様々なコミュニティーや勉強会がありますが、それらを運営している方々が集まってのパネルディスカッションです。各地域に根ざした活動が続いていて、それぞれキャラクターがあると思いますが、向いている方向は同じだと思います。その方向性の確認と、運営のノウハウ、パッションの交換などなど熱く盛り上がる予感がします。
IWDDの第1回目は2006/8/5に開催されていて、その当時は笹平さんが代表でした。そしていつだったかに代変わりをして、私が世話人として月1回の勉強会を継続しています。その中で私は、「勉強会とは」「コミュニティーとは」等々、あまり語って来ませんでしたが、2年くらい運営してきて、いくつか思う事がまとまってきたので、当日はそれを話してみたいと思います。
私が心がけている事は簡単に言えば「何もしない。楽しい事をやる。オープンに。試してみる。」ということですが、もう少し具体的に言うならば、
何もしない
会社みたいな「組織」ではないし好きで集まっているので、マネジメントは必要最小限に。開催の資金的コストも時間的コストも抑えて、ITで自動化できるところは自動化して、あとはコミュニティーの自然に任せるようにして、基本的には言い出しっぺの法則で。ゆるいのでカオスになりがちで、一方では「ちゃんと運営して!」「マネジメントされた方が楽」「名簿作ろう!」という意見も聞こえてきますが...楽しい事をやる
好きで参加しているので、好きな事を発表したり聞いたりする。オープンに
誰にでも開かれていて、フルディスクロージャーで。試してみる
楽しくなりそうな事は何でも試してみる。
ということでしょか。「第2土曜日14時からアイーナで」と開催日時と場所を固定しているので、日程調整とか必要無いので、その点はとても楽です。
当日は、たぶんUstでも生中継されると思います(されないかもしれません)。 平日昼間ですが、当日会場に参加できる方はぜひ是非お会いしましょう♪
やはり「その場」にいる事がとても大事な事で、実際に見て、会ってっていうのが、とても楽しいのです。なので私も盛岡から高速バスで参加します♪
IWDD#28でCentOS、Apache2.2、mod_proxy_balancer
今回はサーバー特集ということで、私は3コマ目にApacheについて話しました。ただ時間が押していたこともあって、60分予定だったのが残り時間35分くらい。予定してた内容の半分を端折って話しました。
事前にIRCとかで話している雰囲気では、「サーバー」自体を見たことがない人も半分くらいいたような感じでした。確かにレンタルサーバーだけを使っていれば、Webサーバーが実際にどんな感じで動いているのか見たこと無いかもしれない。お題を決める時期には 「.htaccess」の書き方について聞きたいというリクエストでお題を決めたんだけど、.htaccess を書くにはhttpd.confを知っているべきなので、.htaccessではなくてApacheをお題に。
