ひがきの日記

2016-06-04

「ねこふん」が終わったら「にゃらまち」

ねこふん

猫ふんじゃったギャラリーたち」と題して、主に大阪ギャラリー、カフェ、雑貨店が猫にまつわる企画を毎年 5月に開催している。通称「ねこふん」

2016年は 25の企画が行われた。 *1

私も 21の企画に足を運んだ。 *2


にゃらまち

「にゃらまち猫祭り」と題して、主にならまちの (ry

毎年 6月に開催している。

どうやって巡るか計画を立てるべく web サイトを見てみたが、ねこふん ほど情報が見やすくない。

営業時間と定休日が一覧で見たい。

とりあえずスクレイピングしてみたが……

require 'open-uri'
require 'nokogiri'

def detail xml
  h1 = xml.xpath('//h1').first
  return if h1.nil?

  eenc = Encoding::default_external
  opts = {replace: ''}

  shop = h1.text.encode(eenc, opts)

  keywd = '営業時間'
  srv = xml.xpath(%|//p[contains(text(), "#{keywd.encode('UTF-8', opts)}")]|)
  srv = srv.nil? ? '' : "%s:%s -- %s:%s" % (srv.text.scan(/\d+/) + %w[00 00 00 00]) # !> too many arguments for format string

  keywd = '定休日'
  hol = xml.xpath(%|//p[contains(text(), "#{keywd.encode('UTF-8', opts)}")]|)
  hol = hol.nil? ? '' : hol.text.encode(eenc, opts).strip.sub(/#{keywd}[ ::]*/, '')

  [shop, srv, hol]
end

def more(uri)
  opts = {invalid: :replace, undef: :replace, replace: ''}
  puts uri.encode(Encoding::default_external, opts)

  fn = uri.split(/\//).last + ".html"
  fn.encode!(Encoding::default_external, opts)
  open(fn, 'w'){|f| f.write(open(URI.encode(uri), &:read))} unless File.exist? fn
  xml = Nokogiri::XML(open(fn))

  lm = xml.xpath('//a[contains(text(), "more")]') || []
  lM = xml.xpath('//a[contains(text(), "More")]') || []
  links = lm + lM
  links.map{|link| more(link.attributes['href'].value)} << detail(xml)
end

require 'pp'
pp more("http://www.nyaramachi.com/shop-list/")
# >> http://www.nyaramachi.com/shop-list/
# >> http://www.nyaramachi.com/shop-list/雑貨-ファッション/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/acartlifestyle/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/花羅古ろん/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/みに工房キャンバス/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/cloverand喫茶通圓/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/啓林堂書店奈良店/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/ことあかり洋品店/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/がまくち雑貨工房janji/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/doco-ao/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/ならまちわおん/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/necoco/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/猫雑貨ベゼル/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/marypoppinspochotte/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/器と郷土玩具瑜伽/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/アート-クラフトショップロビン/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/ab-cats/
# >> http://www.nyaramachi.com/
# >> http://www.nyaramachi.com/
# >> http://www.nyaramachi.com/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/猫雑貨とハンドメイドの店-cat-time/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/太古堂-ギャラリー-ショップ/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/アジアン雑貨-パーンファン/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/奈良のすごいタオル屋さん-ときどき猫/
# >> http://www.nyaramachi.com/shop-list/体験-1/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/着物あそびにっこり/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/美容室照美/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/遊悠工房zooandかぎひろ/
# >> http://www.nyaramachi.com/shop-list/カフェ-グルメ-1/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/うとうと/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/curryandcafe香炉里/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/四季折々の和菓子とらや/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/猫カフェ寧估庵/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/プティマルシェandぷちまるカフェ/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/franzkafkaフランツカフカ/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/喫茶工房まほろば/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/素人珈琲と雑貨よつばカフェ/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/若草カレー本舗/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/和彩rest紅絲/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/サブロク珈琲/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/甘いもん処-咲良/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/中華粥-穀雨/
# >> http://www.nyaramachi.com/shop-list/ギャラリー-1/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/ギャラリー一風/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/ギャルリサンク/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/スペース-プラス&#178;/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/
# >> http://www.nyaramachi.com/shop-list/カフェ-ギャラリー-1/galleryandcafeならまち村/
# >> [[[["ACART LIFESTYLE", "11:00 -- 19:00", "月曜(祝日の場合は翌火曜)"]],
# >>   [nil],
# >>   [["ミニ工房きゃんばす", "10:30 -- 19:00", "火曜"]],
# >>   [["CLOVER&珈琲館通圓", "14:00 -- 23:00", "不定休"]],
# >>   [["啓林堂書店奈良店", "9:00 -- 21:00", "1月1日、2日"]],
# >>   [["ことあかり洋品店", "11:00 -- 17:00", "月曜、火曜"]],
# >>   [["がまくち雑貨工房janji", "11:17 -- 00:00", " 不定休"]],
# >>   [["doco*ao", "13:00 -- 18:00", "月曜、火曜"]],
# >>   [["ならまちわおん", "10:00 -- 18:00", "木曜"]],
# >>   [["necoco", "11:00 -- 18:00", "月曜、木曜&#160;"]],
# >>   [["猫雑貨べセル", "10:00 -- 19:00", "月曜"]],
# >>   [["MaryPoppinsPochette", "10:30 -- 18:30", "木曜"]],
# >>   [["器と郷土玩具 瑜伽", "12:00 -- 18:00", "月曜"]],
# >>   [["アート&クラフトショップ ロビン", "11:00 -- 19:00", "木曜"]],
# >>   [["AB-CATS", "11:00 -- 18:00", "月&火曜"]],
# >>   [["にゃらまち猫祭り2016", "00:00 -- 00:00", ""]],
# >>   [["にゃらまち猫祭り2016", "00:00 -- 00:00", ""]],
# >>   [["にゃらまち猫祭り2016", "00:00 -- 00:00", ""]],
# >>   [nil],
# >>   [["太古堂", "13:00 -- 18:00", "月〜木曜 "]],
# >>   [["アジアン雑貨 パーンファン", "10:00 -- 19:00", " 木曜"]],
# >>   [["奈良のすごいタオル屋さんときどき猫", "11:00 -- 19:00", "不定休"]],
# >>   nil],
# >>  [[["着物あそび にっこり", "10:00 -- 00:00", "水曜&#160;"]],
# >>   [["美容室照実", "9:00 -- 18:00", "火曜、第3水曜日"]],
# >>   [["遊悠工房 ZOO&かぎろひ", "11:00 -- 17:00", "火曜、水曜"]],
# >>   nil],
# >>  [[["うと○うと(にゃらまち美術館)", "11:00 -- 17:00", "不定休"]],
# >>   [["Curry&Cafe 香炉里", "11:00 -- 20:00", "火曜"]],
# >>   [["四季折々の和菓子 とらや", "9:00 -- 20:30", "火曜"]],
# >>   [["猫カフェ寧估庵", "00:00 -- 00:00", ""]],
# >>   [["プティ・マルシェ&ぷちまるカフェ〜", "00:00 -- 00:00", "月曜、火曜"]],
# >>   [["Franz KAFKA フランツ・カフカ", "11:00 -- 21:00", "水曜"]],
# >>   [["喫茶工房まほろば", "11:00 -- 17:00", "木曜"]],
# >>   [["素人珈琲と雑貨 よつばカフェ", "11:00 -- 19:00", "水曜日 営業時間:11:00~19:00"]],
# >>   [["若草カレー本舗", "11:30 -- 15:00", "水曜日夜"]],
# >>   [["和彩Rest紅絲", "11:00 -- 22:30", "火曜"]],
# >>   [["サブロク珈琲", "00:00 -- 00:00", ""]],
# >>   [["甘いもん処 咲良", "10:00 -- 18:00", "不定休"]],
# >>   [["中華粥 穀雨", "00:00 -- 00:00", ""]],
# >>   nil],
# >>  [[["ギャラリー一風", "00:00 -- 00:00", "水曜"]],
# >>   [["ギャルリ・サンク", "12:00 -- 19:00", "不定休(期間中)"]],
# >>   [["スペースプラス&#178;", "00:00 -- 00:00", ""]],
# >>   nil],
# >>  [[["Gallery&Cafeならまち村", "11:00 -- 19:00", "火曜、水曜"]], nil],
# >>  ["Shop List", "00:00 -- 00:00", ""]]

力尽きた。

ページごとに構造がバラバラで Nokogiri 使うより、正規表現でゴリゴリやった方がよさそう。

*1阪神百貨店梅田本店を含む

*2:散財した

2014-06-07

Rails Girls Osaka にカヌレを差し入れしてみた

Rails Girls という、主に女性を対象としたプログラミングワークショップがあり、去る 2014年6月6日・7日 大阪Rails Girls Osaka が開催された。

Rails Girls には、おやつの時間があるらしいので、例によって例のごとくカヌレ堂カヌレを差し入れた。*1
Rails Girls Kyoto では阿闍梨餅が差し入れされたらしいので、大阪も負ける訳にはいかない。

今回は、カヌレ堂が百貨店出展する際の雰囲気をどこまで再現できるか挑戦してみた。

f:id:mas-higa:20140607150133j:image:medium:right

ショーケースいっぱいにカヌレの並ぶ様は形容し難い。参加人数と自分のサイフを考えると、そこまでの数で圧倒することはできないのが残念。

カヌレ堂の催事では、デニムワンピースに身をつつみ、ベレー帽をかぶったキレイなお姉さんがトングでカヌレを取ってくれる。
自分もデニムのシャツで臨んだが、ベレー帽は用意できなかった。

おっさんカヌレを取り分けてくれても嬉しくないであろうから、トングを用意して、セルフで紙皿に取ってもらうことにした。

紙皿と紙ナプキンカヌレ堂をイメージして未晒しにこだわった。
未晒しの紙皿はサイズのバリエーションが少なく、カヌレに対して少し大きめになってしまったのが悔まれる。

最近カヌレ堂が取り上げられた雑誌も展示してみた。
たまたま家にあったブックスタンドが黒猫のモチーフだったので、トングのスタンドも黒猫で統一してみた。
そこで止めれば良かったものを、黒猫マステ、黒猫付箋と黒猫で統一してしまったのはやりすぎた感が否めない。

用意したカヌレは全 8種類

カヌレ以外にも、おやつはたくさんあると聞いていたので、ひとり 2〜3 個を目安に用意したが、主催者側から ひとり 2個というアナウンスがなされた。
8種から 2個選ぶというのが、また楽しさをプラスしたのではないだろうか (と思いたい)

「若干余っていますので、おかわりをどうぞ」と奨めると何人もおかわりに来てくれた。
これは嬉しい!


参加者の声

カヌレ堂、聞いたことあって気になってたんです」
カヌレ大好きなので、帰りに買いに行きたいくらいです」*2
などなど*3

Rails Girls が、どんな雰囲気なのか分からず不安もあったが、なんとか喜んでもらえたと思う。

差し入れに関してスタッフのくにちゃんには何度も問い合わせをしてすみませんでした。
私のことは嫌いになってもカヌレ堂のことは嫌いにならないでください。


P.S.

カヌレを提供したら、さっさと帰るつもりでいたのだが、アフターパーティー & More に誘っていただいたので、あつかましくも参加させていただいた。

スタッフでもコーチでもないのにすみません。

案の定パーティーでは所在なく、ひとりもくもくと料理をいただいていたのだが、突然 参加者の女性に話しかけられた。

なんとその女性は、数年前に KOF で、私が講師をした Ruby初級者向けレッスンの受講者だったらしい。

こんなところでお会いするとは!*4

彼女が今 Rails を使っていることに、ほんの少しでも影響を与えていたとしたら、こんな嬉しいことはない。

そして彼女の一言が、今後の私にも大きく影響するんだと思う。
ほんとうにありがとう。

*1:9ヶ月ぶりのエントリがまたカヌレとは…

*2:お店では「ひがきに聞いた」と言ってもらえればスムーズに会話が進むと思います。

*3:「お店の方ですか」という想定内の質問もいただいた。従業員ではありません。

*4:この驚きと感動を素直に表現できないコミュ障ですみません。彼女にはまったく伝わっていなかったでしょうが喜んでいます。

2013-09-18

関西Ruby会議05でカヌレを配布してみた

去る 2013年8月31日、関西Ruby会議05 が開催された。

今年もスタッフとして参加し、おやつ係を担当した。


なぜおやつが必要なのか

f:id:mas-higa:20130918221729j:image:medium:right

1日中、会議に集中していては頭が回らなくなる。糖分が必要。

Minami.rb の勉強会では、毎回おやつの時間があって楽しい。美味しい。

そこで関西Ruby会議でも、おやつ配布することにした。

おやつはカヌレ堂カヌレに決めた。


カヌレとは

フランスのボルドー女子修道院で古くから作られていた菓子。蜜蝋を入れることと、カヌレ型と呼ばれる小さな型で焼くことが特徴である。そもそもカヌレとは、「溝のついた」という意味である。外側は黒めの焼き色が付いており固く香ばしいが、内側はしっとりとして柔らかい食感を持つ。 ─── Wikipedia より

カヌレ堂とは

大阪は桜川にあるカヌレ専門店。

フランス産まれのカヌレを日本風にアレンジ。

6種類のレギュラーメニューに加え、月替わりの 2種類、計 8種類のカヌレが楽しめる。

関西の IT系勉強会では、カヌレ堂のカヌレがよく食されている。


カヌレを 3個ずつ配布

全種類を一人で食べるのは多すぎる。しかし 1個だと物足りない。

多すぎず少なすぎず、3個がちょうどよいのではないか。

カヌレの種類を選べなくすることでワクワク感を演出。

どうしても違う味のカヌレが食べたければ、他の参加者と交換してもらう。

何が当たったか見せ合ったり、トレードしたりで、コミュニケーションの助けにもなったのではないか。

80人余りの参加者がカヌレの袋を除き込んでニコニコしている光景が、個人的にはとても楽しかった。


反省点

  • Ruby や関西Ruby会議とカヌレは、まったく無関係。
  • ドタキャンした人が 30人近くいて、カヌレが余った。
    • 余分に貰ってくれる人がいて無駄にならずに済んだ。
  • この企画に夢中になりすぎて、他の仕事がおろそかになった。*1

謝辞

ありがとうございました。

*1:すみません。実行委員の皆さん、すみません。

*2カヌレ堂さんもツイートを見ていたらしい

2011-09-10

第51回 Ruby/Rails勉強会@関西で話してきた

Ruby/Rails勉強会@関西で話してきた。

f:id:mas-higa:20110921233538j:image

どなたかが「人のネタでも発表していい」と言ってた気がしたので @rubykansai くんのネタで初級者向けレッスンの代わりのようなことをした。

資料は @rubykansai くんの tweet を列挙しただけで、フリートーク & グループ討議だったので、発表資料をそのまま公開しても面白くない。

なので、要点だけここに書いておく。

Ruby関西の情報発信

@rubykansai くんのつぶやき

  • String#%
  • succ
  • Stringの簡単なメソッド
  • Ruby の変数
  • オブジェクトのコピー

フリートーク & グループ討議で気になったこと

  • irb よりも pry なの?*2
    • インストールできない人、うまく動かない人がいた。
    • show-method が便利。
  • String#% はメソッドなの?
    • Ruby の演算子は、実はメソッド。
    • 何が演算子かは言語仕様で決まっている。

@rubykansai くんの今後

  • これからも不定期につぶやく。
  • 勉強会で取り上げるかどうかは未定。

次回予告

*1:日本Rubyの会 法人化で使えなくなるかもね。

*2:rcode-tools 使うから、どっちでもいいよ。

2011-08-12

CamiApp 専用ノートは買ってない

SHOT NOTE に激似の CamiApp が登場。

見た瞬間に思ったこと

  • これノート買わんでもイケそう

用意するもの

  • iPad (黒)
  • A5 の紙

やってみた

  1. A5 の紙に何か書く。
    • f:id:mas-higa:20110811111505j:image:medium
  2. 紙を iPad の上に乗せる。
    • f:id:mas-higa:20110811112628j:image:medium
  3. CamiApp を起動する。
    • f:id:mas-higa:20110812204925p:image:medium
  4. ノートを選択する。
    • f:id:mas-higa:20110812204926p:image:medium
  5. 撮影する。
    • f:id:mas-higa:20110812204927p:image:medium
  6. できあがり。
    • f:id:mas-higa:20110812204928p:image:medium

ステージ、ブース、セミナー まもなく募集開始!!

立体も撮ってみた。

f:id:mas-higa:20110812204929p:image:medium

要するに黒い枠の内側を台形補正してくれるみたい。

こんなことも。*1

f:id:mas-higa:20110811112328j:image:medium

f:id:mas-higa:20110812204931p:image:medium

iPad に表示してるものでもイケる。*2

f:id:mas-higa:20110812082633j:image:medium

f:id:mas-higa:20110813111252p:image:medium

まとめ

  • 白黒のコントラストで四角けりゃイケそう。
  • SHOT NOTE よりも手軽。

*1:ごめんなさい。

*2:それ何がうれしいの?