makoラボ

日常や勉強会や技術ネタ

DBに保存したERB形式のコードをHamlで展開する

最近、.erb形式のファイルから.hamlに変換していってるのですが、その中で一つハマったことがあったのでメモ。

元のerbファイル

<%= raw ERB.new(@blog.content).result(binding) %>

このようにDBなどからERB形式のコードをviewに展開しているコードがあったとします。

単純にhaml形式に変換する

= raw ERB.new(blog.content).result(binding) 

単純にhaml形式のコードに変換するとこうなります。 が!画面を表示すると画面が崩れてましたorz

何故か他のhamlで書いてるコードが全くhtmlとして出力されていない状況。。。

:erbフィルターで記述する

:erb
  <%= raw ERB.new(@blog.content).result(binding) %>

:erbフィルターでerbそのままで記述すると上手く出力されました。

単純にhamlの中にERB形式のコードを無理やり展開したのでおかしくなってたのかな?

オープンセミナー2014@岡山を開催してみて

早いもので前回ブログで告知したオープンセミナー2014@岡山が無事開催されました。

実行委員長として関わってみた感想とかをつらつらと個人的に思ったことを書いていこうと思いますが、

と煽られたので頑張って書きます。

そんなわけでアジェンダです

  • 想いは達成できたのか?
  • 当日の振り返り
  • おわり

想いは達成できたのか?

前回の告知ブログで、"「フロントエンドの人とサーバーサイドの人が交流出来たり、お互いの事を知るきっかけになるイベント」にしたい"と書いていました。 オープンセミナー岡山のテーマを「フロントエンドとサーバーサイド」にしたのもそういう想いがあったからです。

今回のイベントはおかげさまで150名以上のご参加をいただきました。 とりあえず個人的に目標にしていた100名を大幅に超えたことに驚いてると同時に、参加してくださったみなさんにはただただ感謝です。

アンケート等がまだ集計出来てないのでざっくりとした個人の感覚ですが、

  • 3割:主にフロントエンド寄りの勉強会に参加しているような人
  • 6割:主にサーバーサイド寄りの勉強会に参加しているような人
  • 1割:その他

だったように思います。 例年だとサーバーサイド寄りの勉強会に参加している人でほとんどを占めているイベントなので、ある程度は目標を達成できたのかなと思います。

ただ、このイベントだけでこういう流れが終わってしまうのも悲しいので、機会があればフロントとサーバーサイドの人が混じれるようなイベントを開催できればなと思ったり。 また、このイベントをきっかけにそれぞれの分野の人達が別の分野の勉強会にたまには顔を出してみるっていうのが起こればいいなと思ってます!

当日の振り返り

当日の発表内容については@patorashさんのブログに詳しく書かれているので割愛して、思ったことをつらつらと書いていきます。

パソコンは私たちのもう1つの目-見やすく、聞きやすいWEBページづくりにぜひご協力を!

発表者の毛並みけさんの発表は、普段自分たちが視覚的に見ているWEBページが目が見えない人達にとってどう見えるかを教えてくれました。

普段何気なく見ているサイトも作りが悪いと、音声ブラウザを通してみると目的の本文に辿り着くまですごく時間がかかってしまう。

「サイトは技術を見せる場所じゃなくて情報をわかりやすく見せる場所です」と言われてたのがすごく印象に残っています。

ソフトウェアエンジニアの目指す道〜フロントエンドとサーバーサイドを超えて

株式会社ソニックガーデンの倉貫さんの発表は、プログラマーの仕事についてあらためて考えさせられる内容でした。

プログラマーの仕事はナレッジワークで、コンサルタントや医者のようなプロフェッショナルサービスである。 プログラマーをかき集めたとしても、かならずしもソフトウェアの納期が早まる訳ではないというのはやはりこの辺りだと思う。

実践 大都会式 プロトタイピング&フロントエンド2014

実を言うと大都会勢の前川さんと久保木さんは、今回のテーマを決めた時に一番最初に登壇のお願いをしようと思った2人でした。 僕が、フロントエンド系の勉強会に参加するとよくお見かけしてて、懇親会でいつかこんなイベントしたいねとお話してたり。 このプログラマーさんとデザイナーさんの組み合わせのセッションを見てみたい!と思ってお願いしちゃいました。

発表内容としては、2人で体重記録アプリをプロトタイピングしてみるという内容でした。 ソース管理をgitでおこなっていて、デザイナーさんもgitを使う時代だよなぁと思いました。*1

久保木さんのデザイナー視点、前川さんのプログラマー視点のそれぞれのプロトタイピングで気をつけてたところやポイントが聞けて良かったです。

オープンで柔軟なクラウドプラットフォーム ”MICROSOFT AZURE“

Microsoftの井上さんの発表は、Windows Azureの機能のパワフルさについて学べました。 WindowsAzureで驚いたのが、スケールアウトして4台のサーバーに分散している状態でも、1つの場所に修正したソースコードを反映するだけで全てのサーバーに反映されるといった謎技術。 また、スケールアウト・スケールアップの時間もわずか数秒で終わるなど、これは強力だなと思わされました。

明日からできる、デザイン脳!

秋葉ちひろさんの発表は、ユーザーにとって使いやすいデザインを考えるときのコツについて学べました。

歯科衛生士さんが患者の予約を受ける時につかうアプリを例にして、デザインをこうしたら使いやすくなるよという例を示されていて、普段デザインしてない人間にとってもわかりやすかったです。

途中のワークショップで、どうやったら使いやすくなるか考えてみようってなった時に、いかんせん僕の「便器洗浄系脳」では中々良い案が出てきませんでしたw その辺りは、徐々に徐々にデザイン脳に切り替えていかないとなと思った次第です。

ベンチャーのサービス開発におけるフロントエンドとサーバサイドの間

クラウドワークスのCTOの大場さんの発表は、クラウドワークスのサービスと、サービスの機能改善の取組みについてでした。

インターンの子たちに純粋な目でサービスを使ってもらって違和感を持った所を指摘してもらう取り組みはいいなと思いました。 開発している人だとやっぱり頭が凝り固まってしまうのでピュアな目は大事だなと、うちのサービスでも取り入れていきたいところです。

あとは「機械脳になりすぎて便器洗浄したい系男子って感じ」はオープンセミナー岡山の流行語大賞と言っても過言では無いと思います。

懇親会

セミナー本編のあとは恒例の座での懇親会でした。

来年の実行委員長への引き継ぎの儀も終わりホッと一息ついていたらサプライズで、実行委員長お疲れ様の色紙とプレゼントをいただきまして、企画に参加したみなさんありがとうございました! いただいたドラゴンの剣とその他は大切に使わせていただきます!

懇親会のLT大会もいつもどおり盛り上がって楽しかったです。 あれを見てると自分も何か発表すればよかったと後悔したので、次回はなにか用意しようと思います。

おわり

何はともあれ無事終われて良かったです。 講師の皆様、参加してくださった皆様、サポートしてくれたスタッフの皆さんありがとうございました。

来年の実行委員長さんがどんなテーマで開催してくれるのか今から楽しみです!

*1:実は今回登壇しているデザイナーさん2人(久保木さんと秋葉さん)はgit使い。やはりバージョン管理が出来るのは便利 

オープンセミナー岡山は岡山のITに関わる人が集う場所

f:id:mako_wis:20140413234828p:plain

オープンセミナー2014@岡山の実行委員長です。こんにちは。

2014年5月17日(土)にオープンセミナー2014@岡山という参加無料のセミナーがあります。

この記事の目的を平たく言うと、公式サイトとは違うアプローチでイベントの告知をすることです。

個人的にこのイベントについて思ってることとかを書いていこうかなと思います。

そんなわけでアジェンダです。

  • テーマ「フロントエンドとサーバーサイド」について
  • こんなイベントにしたい
  • 懇親会にも参加して欲しい

イベント、オープンセミナー岡山とはなんぞや?とかの詳細等はオープンセミナー2014@岡山のサイトをご覧ください。せっかく作ってるのでそちらを見ていただければと思います。

テーマ「フロントエンドとサーバーサイド」について

今回のオープンセミナー岡山のテーマは「フロントエンドとサーバーサイド」です。

数人の方に対義語としておかしくね?と言われましたがあえてこの字面にしております(ちゃんとするなら「フロントサイドとサーバーサイド」とかかな?)最近良く聞く「フロントエンドエンジニア」と「サーバーサイドエンジニア」の方が馴染みがあるかなと思ってこうしています。

タイトルとして対比させていますが、別に対決させよう!とか思っているわけではございません。ポスターには書いてあるのですが、サブタイトルとして「No border」というのを掲げています。境界線をなくそうというか、そこまでいかなくてもお互いのやってることに興味をもったり、知ったりする事が出来ればなと思ったりしているわけです。

最近だと、プログラマーの人でもBootstrapを使って、サービスを公開したりしてる人もいたり、デザイナーの人でもjQueryを使ってデザインをしなきゃいけなかったりと、お互いの必要な技術の所が混ざって来てるような気がしています。

その辺りで、お互いの知ってる知識をシェアしたり、繋がりが出来たりすればいいなと思ったりしています。

こんなイベントにしたい

ということで、今回のイベントは「フロントエンドの人とサーバーサイドの人が交流出来たり、お互いの事を知るきっかけになるイベント」にしたいと思ってます。

岡山でも色々な勉強会があるのですが、

  • デザイナーさんやWeb屋さんが集まるどちらかと言えばフロントエンド寄りの勉強会
  • プログラマーが多く集まる言語系のどちらかと言えばサーバーサイド寄りの勉強会

の2つに分かれてしまっています。

僕はどちらかと言えばサーバーサイド寄りの人間なのですが、フロントエンド寄りの勉強会にも参加しています。聞いても分からない事もあるのですが、それ以上になるほどこう考えればいいのかという事もあります。

本職の人にはかないませんが、相手のやってることを知ってる事でだいぶ違う事があるのではないかなと思ったりしています。 なので、ガッツリじゃなくてもいいので、少しは相手の仕事を知る、興味を持てる、繋がりが出来るイベントに出来たらいいなと思っています。

岡山の事を中心に書いちゃいましたがもちろん県外勢も大歓迎です!

懇親会にも参加して欲しい

小さい勉強会は懇親会が本番じゃなくてもいいのですが、年に数回ある大きいイベントは懇親会も本番だといいな、と思います。 そんなこと覚えてない

年に数回しかない大きなイベントの一つなので、懇親会は盛大にやります。

岡山には座・スタジアムという、勉強会の懇親会には最強の設備があります。毎年、年末の忘年会議ではそこでLTをしたり、聞いたりするためだけに県外から遠征する人もいるとかいないとか。

それにも負けないぐらい盛り上がるのがオープンセミナー岡山の懇親会です。 LT大会ももちろんやります!

また、セミナーに参加した人達と交流できるのが懇親会のいいところです。講師の方々も参加されるので、セッションの内容を深く聞きたいとかあれば参加するのがオススメです。

ぜひ、本編と合わせて申し込みしていただければなと思います。

まとめ

岡山で開催される年に一度の勉強会のお祭です。 今年は、デザイナーさんやフロントエンドよりの方も参加してもらえるといいなと思ってます。

大都会岡山でも、東京とかにも負けないくらい盛り上げて行きたいと思ってます! みなさまのご参加をお待ちしております。

参考文献:オープンセミナー広島は広島のITエンジニアが集う場所 -そんなこと覚えてない

ORマッパーを使う時に気にしていること

ふと、自分がORマッパーを使う時に何を気にするだろう?と思う事があったので、まとめてみました。

ちなみに、ORマッパー否定派ではありません。効果的に使えば全然いいと思いますし、むしろ好きな方です。

気にしていること

出力されるSQL

自分が意図した通りに出力されているかどうかが気になります。確かにORマッパーの自動生成は楽ちんですが、どんな感じに生成されるのかは最低限知っとかないとなと思ったりしてます。

SQLの実行タイミング

いつ実行されるの?今なの?ってのが気になります。どのメソッドを実行するとSQLが発行されてデータベースにアクセスされるのかは分かっとかないとなと思ったりします。

データベースアクセス

無駄にSQLを発行してないか?とかデータベースへのアクセスが無駄に発生してないかが気になります。上の2つに絡む事ですが気にしとかないとなと思うところです。

トランザクションの範囲

どこからどこまでがトランザクションの範囲なの?ってのが気になります。まぁちゃんとメソッドとか調べとけよって事ですが。。。

ロックはどうなってる?

テーブルロック、レコードロック、どの単位?ロックがかかってる?ロックの状態が気になります。更新系もそうですが、SELECTするだけでロックがかかるデータベースもあるので注意です。

まとめ

ばーっと思いついたものを書きなぐってみました。ORマッパーを使うにしてもSQLやデータベースの事を気にしようよと思います。知っとくと処理速度が向上したり、今の処理の問題点が出てきたりするんじゃなかろうかと思います。

みなさんはORマッパーを使う時にどこを気にしてますか?

今年度ももう終わりですね

今年度も今日も終わりですね。 なのでちょっと振り返ってみようと思います。

今年度はじめ

今年度のはじめあたりはOSOで副委員長やったり、クックパッドの24時間コンテストに応募したり色々やりましたね。クックパッドの24時間コンテストは残念ながら入賞出来ませんでしたが、次回は何かしらの賞がもらえるように頑張りたいところです。ちなみに応募作品はこちら

今年度中盤

今年度中盤はデスマなプロジェクトとに突っ込まれててんやわんやしてました。TDDBCに参加できたのはホント奇跡な気がする。

今年度後半

1月にクレオフーガに転職しました。転職してからの3ヶ月間はあっという間だった気がする。iPhoneアプリ作ったり、WordPressやったり、Railsやったり、東京合宿行ったりとめまぐるしく過ぎていった気がします。

そんなこんなで怒涛の1年だった気がしますが、おかげで色々と充実してた一年だったのかもしれません。明日から新年度ですが、OSOの実行委員長もありますし、今年度よりもより一層何かしらありそうな予感もしてたり。また来年振り返っていい一年だったと思えるような1年にしていきたいなと思います。

広島・岡山Ruby交流会01に参加して来た

以前にこのブログで紹介した、広島・岡山Ruby交流会01に参加してきました。

今回の勉強会のテーマは「技術者の交流」ということで、自己紹介をいつもより長めにしようという試みをしてみました。

各自のやってること、今困ってること、会社のことなどを話してもらって、気になったことなどをみんなが質問する形式で自己紹介をやってみました。

結果、自己紹介が思った以上に盛り上がって午前中の2時間で収まらず、まさかの昼休憩を挟んでしまうという展開にw普段、みんながどんな事をしてるのかなんかが色々と聞けてよかったんじゃないかなと思います。

その後は、hirosima.rb本体と噂のひむひむ氏のセッションがあったり。みんなでそれに対して話をしたりしてました。(ひむひむ氏のセッション内容はこちら)

全体を振り返ってみて、テーマの「技術者の交流」とい目的は果たせたかなと思います。ただちょっと自己紹介が長すぎた気もするので次回はもう少し調整した方がいいかなと思ったりしてます。

次はみんなで温泉という噂があったりなかったり

the_dateとget_the_dateの違い

WordPressでトップページ等で記事の一覧を表示したい場合があって、その場合日付を見出しに持ってきたりすると思います。

そんな時、同じ日付に投稿された記事がある場合に見出しに日付が表示されない現象が起きてしまいました。

日記:2014/03/26
お好み焼きを作ってみた
お知らせ:2014/03/23
誕生日でした
日記:
◯◯に行って来ました

原因は『the_date』

上のように表示されてしまった時のソースは以下のような感じでした。

<dl>
<?php 
  // 日付降順で最新3件を取得する
  $args = array( 'posts_per_page' => 3, 'order'=> 'DESC', 'orderby' => 'date' );
  $postslist = get_posts( $args );

  foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?>

    <dt><?php the_date('Y/m/d', '', '', true); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>

<?php
endforeach; 
wp_reset_postdata();
?>
</dl>

見出しにしようしている日付の所でthe_dateを使用していたのですがそれが問題でした。 the_dateは1日に複数記事の投稿があった場合、最新の投稿だけに投稿日時を出力する。とのことなので最初の1件しか表示されないです。

全部表示したいなら『get_the_date』

<dl>
<?php 
  $args = array( 'posts_per_page' => 3, 'order'=> 'DESC', 'orderby' => 'date' );
  $postslist = get_posts( $args );

  foreach ( $postslist as $post ) :
  setup_postdata( $post ); ?>

    <dt><?php echo get_the_date('Y/m/d', '', '', true); ?></dt>
    <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>

<?php
endforeach; 
wp_reset_postdata();
?>
</dl>

全てに日付を表示したい場合はget_the_dateを使うの良いようです。こちらだと『すべての投稿記事に投稿日時を表示する』なので投稿日時が全件表示されます。

おわり

『the_date』『get_the_date』の違いでハマってしまいました。また困ったときのためにメモ。