Persistence

技術メモなど

Everyday Railsを写経する(その1)

最近とあるプロジェクトに参加させてもらって、そのお陰でテストコードを書く機会に恵まれたのは良いのだけど、なにせほとんど書いたことないものだから全然わからない。ということで「Everyday Rails… Aaron Sumner 著 et al. [Leanpub PDF/iPad/Kindle]」を使って勉強を始めました。

今日は「3.モデルスペック」の前半、DRYにするの前まで。モデルのvalidationとmethodのテストの書き方について勉強しました。ここでモデルのmatcherについて書くのはDRYじゃないので、リファレンスのURLだけにしておきます。

rspec/rspec-expectations · GitHub

methodのテストで便利なものにchangeというmatcherがあります。値が変更されたかどうかを検証するのと、メソッドチェインで.from(元の値)、.to(変更後の値)、.by(差分)も同時に検証できる。サンプルはリファレンスの「Composing Matchers」にあります。

Ginza.rb #10 に行ってきた!

銀座周辺のRubyistが集まる勉強会に行ってきました。

会場がすごい

会場はリクルートライフスタイルさんの会議室でした。大部屋に座れる階段みたいなのがあってリラックス出来る感じでした。他に畳部屋や南国部屋があって素敵すぎる会議室でした。お菓子とコーヒーもサービスして頂いてありがとうございました。

初参加の人が多い

今回のテーマは、RubyWarriorというRubyを学習するために作られたゲームで遊ぼうというものだったので、割と参加しやすく初参加の人が多かったようです。私も初参加の人でした。私の場合は、参加しやすいテーマだったっていうのと、タイトルの『Rubyの力で道を切り拓け!』ってところに刺さることろがあり思い切って参加してみました。

複数人でのライブコーディング

RubyWarriorはコードを書いてゲームを進めるシステムなので、複数人でひとつのコードを書くという作業が新鮮で面白かったです。人前でコード書くっていうのはホント頭が真っ白になります。ゲーム自体はかなり良く出来てるなという印象でした。beginnerモードでも意外と難しく、時間がなかったので最後までいけませんでしたが、最後までクリアしたいと思います。

KPT

毎回振り返りをやっているのは良い習慣だな~と思いました。K(Keep)、P(Problem)、T(Try)は覚えておこう。

Rails+Mongoってどうなの?

次の個人的なプロジェクトでRails+Mongoで作ろうかなと考えていて、でもRailsActiveRecordつかったらMongoのスキーマレスの良さがなくなっちゃうんじゃないかなーって思っていたので質問してみました。立ち話で最後までお話できませんでしたが、やっぱりActiveRecordとMongoの思想はちょっと違うからあまりオススメできないって感じでした。自分はよくMongoとNode.jsを一緒に使っていて、スキーマレスならではの柔軟性やコードとの親和性が高いのがすごく好きなんですが...DBを取るかフレームワークを取るか難しいところです。

あと、試しところRails4.1に対応したMongoのドライバはまだなく、Rails4.0だとmongoidの4.0.0.beta1もしくはmongoid_rails4というgemが対応しているようです。まだインストールしかしてないですが。

懇親会

  • いろいろな人と仕事についての話や、キャリアについてお話ができたのはいい刺激になりました。全員とはお話できませんでしたが、また機会があればお話したいです。
  • Googleグラスとか360度カメラとかガジェットをさわらせてもらった。Googleグラスの空間にディスプレイがある感じかっこいい!ただ、メガネしないとボケることがわかったので度付きグラスも作ってください。360度カメラはほんとに死角なし!天井とか地面とかどうやってとってるんだろう。専用のアプリがなくてもぐるぐる見れるのはすごいですね。

最後に

運営の方々ありがとうございました!

『ドラッカーさんに教わったIT技術者が変わる50の習慣』

概要

タイトルにちょっと問題ありだが内容は素晴らしい。

タイトルの「ドラッカーさんに教わった〜」という表現は、実際にドラッカーが本の内容を教えたわけではないので適切でないかもしれない。「ドラッカーさんの教えをIT技術者にあてはめた〜」が正しい。更に言うとドラッカーではない本からの引用も多数ある。という細かいツッコミはあるとしても、書かれている内容はどれも大変良いものでした。全部書き出すわけにも行かないので、特に意識しておきたい(自分に欠けていると思われる)内容をまとめておく。

対象読者

内容としては大きく分けて、3/5がプロジェクトメンバーとしての習慣、2/5がプロジェクトリーダーとしての習慣となっているが、現在の立場に関係なく新入社員もCEOも読めばいいと思う。

内容メモ

01.知的労働者としての特性を意識する

私たちは知的労働者です。私たちは、命令にしたがって行動するのではなく、自分で考えて意思決定をしなければなりません〜 ITエンジニアは自分を軸に判断していると仕事がうまくいきません。社会、顧客、会社、周囲のエンジニアなど、自分以外の何かに対する貢献を意識すると、自分の感情以外の部分で判断することができるようになります。

『貢献する』という意識が、IT技術者としてのすべてのスキルの根底になるということです。

20.仕事の品質を向上させる

金銭的な報酬を求めるのではなく、自分自身の能力・仕事・成長を報酬として考える〜 自分のやった仕事は、自分の作品だと考える〜 こういう気持ちで仕事をしていくと、仕事の品質を高めることは手抜きのできない重要な事になるのではないでしょうか?〜 これは、自分自身のモチベーションアップにもつながるはずです。

前向きなマインドの持ち方ですね。

28.誤りを誠実に謝罪する

謝罪は、決して相手に許してもらうためにするものではない〜 自分を正当化して逃げ回っても、問題はついて回ります。〜 先延ばしすれば、忘れられるのではないかという期待は、あなたの心の弱さであり、全くの幻想です。時間が経つほど、事態は必ず悪化します。

謝るときも、逆に謝られる時も、感情は脇に置いて論理的に対応することが大切です。

37.メンバーのプロセスを管理する

最終的に完成した仕事の品質は、個々の仕事の品質の総和です。ここの仕事の品質が充分でないのに、全体の品質が良いということはありえません。

テストだけが品質ではないということです。

まとめ

この他の習慣も全て大事なことなんですが、すごくざっくりまとめてしまうとこういうことなのかなと思いました。

『すべての行動や判断は、目的意識を持って、論理的に行うべし』

最近思いついたアイディア

貯めこんでるだけでは何も起こらないので、twitterに投稿してみました。

photo by Martin Whitmore

ちょっと前に読んだ本で、「アイディアを公表するとパクられると思うかもしれませんが、世の中のディレクターにあなたのアイディアをパクらせてみてください。すっごい難しいですよ!」って書いてあったんだけど何で読んだかを忘れでしまった。

自作サイト(ポートフォリオ)

今まで作ってきたWebサービスポートフォリオです。

※ほとんどが作っただけで終わっているので、現在は動作しないものもあります。

Doll Face Detector

f:id:bisque3311:20150617220045j:plain

項目 内容
概要 ドールの類似顔検索サービスです
詳細 DollFaceDetectorというサービスを作りました。
サイトURL http://doll-face-detector.herokuapp.com/
ソースコード 非公開
作成時期 2015/05
スキルセット Node.js(Express), AngularJS, Heroku, AWS(S3, dynamodb, lambda)

npm

oxford-face-api

MicrosoftAzureのFaceAPIsのラッパーモジュールです。

RubyGems

media_arts_db | RubyGems.org | your community gem host

メディア芸術データベースのラッパーモジュールです。

すごいディーラーリスト for ドルパ31

f:id:bisque3311:20140515232735p:plain

項目 内容
概要 ドールズパーティ31のディーラーリストを俺が考える最強の~にしました
詳細 すごいディーラーリストを作った
サイトURL http://dp31.herokuapp.com/
ソースコード https://github.com/bisque33/DollsPartyDealerViewer
作成時期 2014/04
スキルセット Ruby on Rails, MongoDB, Heroku

JSON.parse(NAVERまとめ);

f:id:bisque3311:20140403020609p:plain

項目 内容
概要 NAVERまとめから位置情報を含むスポット情報をJSON形式で取得します
詳細 NAVERまとめから位置情報を含むスポット情報をJSON形式で取得する
サイトURL http://dp31.herokuapp.com/
ソースコード https://github.com/bisque33/DollsPartyDealerViewer
作成時期 2014/03
スキルセット Node.js, Ajax, javaScript, Heroku

Beatube-IIDX

f:id:bisque3311:20140403020203p:plain

項目 内容
概要 beatmaniaIIDXのゲーム画面を模した動画検索・プレイヤー
サイトURL http://beatube-iidx.herokuapp.com/
ソースコード https://github.com/bisque33/beatube_for_iidx
作成時期 2014/01
スキルセット Node.js, MongoDB, WebSocket, jQuery, Ajax, javaScript, Heroku

Node.js + Socket.io の技術学習として作った。他にも、MongoDBを使ったり、jQueryをゴリゴリ書いたのもこれが初めてで、いい勉強になった。現在リファクタリング中...で止まっている。

RTA Studio

レンタルサーバを解約してしまったためソースコードのみ。

項目 内容
概要 テキスト専用のGitHubのようなものです
ソースコード https://github.com/bisque33/rta-studio
作成時期 2013/07
スキルセット Ruby, Ruby on Rails, Nginx, PostgreSQL, Git, Linux

RTA(リアルタイムアタック)は、ゲームをリアルタイムに最速クリアをする遊び方で、主にニコニコ動画などで人気のカテゴリの1つです。このRTAの面白さにハマり、チャートと呼ばれる攻略方法をサイト上で情報共有して育てていこうというコンセプトで作成しました。しかし、使い方ががわかりにくく、テストユーザにすら使ってもらえなかったという苦い経験で終わりました。

工夫した点としては、チャートはテキストファイルなので裏でGitを使って履歴や差分を見たり、チャート自体をクローンできるようにしたこと。GitHubのクローンのようなもので、Gitを知らない層の人にGItの便利な部分を使えるようにしたいと考えました。

Dealer Market Guide 〜みんなで作るドールディーラー情報サイト〜

f:id:bisque3311:20140403015620p:plain

項目 内容
概要 ドール服のディーラー情報を管理するサイト
サイトURL http://dm-guide.herokuapp.com/
ソースコード https://github.com/bisque33/dealer-market-guide
作成時期 2013/01
スキルセット Ruby, Ruby on Rails, PostgreSQL, amazon S3, Heroku

趣味のドールの情報サイト。イベントに参加するディーラーを素早く検索・確認できるようにしたいとの思いから作りました。内容としては画像投稿サイト。各イベント、各ディーラから画像などの情報を検索できます。

現在ドール熱が少々冷めてしまい、サイトはベータレベルで止まっているが、ユーザビリティを改善してちゃんとしたものにしたい。

RubyGems Guides for Japanese

f:id:bisque3311:20140403021025p:plain

項目 内容
概要 RubyGems-Guidesの和訳サイト
サイトURL http://rubygems-guides-jp.herokuapp.com/
ソースコード https://github.com/bisque33/RubyGems-Guides-for-Japanese
作成時期 2012
スキルセット Ruby, Sinatra

OSSへの貢献と、英語の勉強、Rubyの勉強を兼ねて、RubyGems Guidesを和訳したもの。翻訳率は50%程度。(とりあえず読みたい部分だけ訳して満足してしまった。。)

ソースコードGithubで公開していたら、見ず知らずの人が翻訳を手伝ってくれたりしたのは嬉しい経験でした。

AKB Search

f:id:bisque3311:20140403023108p:plain

項目 内容
概要 AKBを題材にしたアフィリエイトサイト
サイトURL http://akb-search.herokuapp.com/
ソースコード 非公開
作成時期 2012/07
スキルセット Ruby, Sinatra, PostgreSQL, Heroku, 各種WebAPI

AKB48のファンと言うわけではなく、完全にアフィリエイト目的のサイトを作ってみようという思いで作ったサイト。AmazonYoutubeなど各種APIをいろいろと使いました。が、愛が足りなかったようです。

and more...

これ以前はLAMP環境でいろいろなサイトを作っていましたが、レンタルサーバを解約したのでもう残っていません。

音ゲーの始め方

前回の記事で「音ゲーの楽しみ方」について書きましたので、今回は実際にどうやって始めたらいいかについて書きます。

好きなゲームを選ぶ

前回の記事でも書きましたが、今や音ゲーはゲームセンターにあるだけでも十数種類、さらに家庭用ゲーム機(PS,WIIなど)、PC、最近ではスマホアプリでもあります。

さてこの中からどう選ぶかですが、おすすめする方法は、まずゲームセンターに行ってみることです。なぜなら、家庭用ゲーム機やPC、スマホアプリなどの多くは、ゲームセンターにあるゲームをコンシューマ向けにしたものだからです。それと、音ゲー体感ゲームですから、どのゲームが見ていて一番「楽しそう」「かっこいい」と思えるかも重要なポイントだと思います。

一番初めに行くゲームセンターを選ぶポイントとしては、なるべく大型店(ラウンドワンなど)に行くと、ゲームのラインナップが多いので良いと思います。

何度かやってみる

面白そうと思うゲームがあったら、1回やってみましょう。人前でプレイするのは恥ずかしいと思う人もいるみたいですが、誰も下手なプレイなど見ていないから大丈夫です。どうしても恥ずかしいと思うのなら、友だちを連れて一緒にプレイしたらいいともいます。

1回目はなんだかよく分からないまま終わってしまうかもしれませんが、4,5回やるとだんだん要領がわかってくるのとともに、自分ができるラインとできないラインの壁が見えてくると思います。この壁を「超えてやりたい」と思えるならきっと上手くなります。そうまで思わなくても、「楽しかったからまたやりたい」と思えれば十分です。逆に「自分には向いていない」と思ったらそこまででしょう。

師匠を見つける

音ゲーを楽しみながら上手くなるには、良い師匠を早く見つけることが一番だと思います。もし知り合いに音ゲーマーがいれば、その人を師にしてもいいですし、その人のコミュニティーに参加させてもらうのもいいと思います。

また、知り合いが一人もいない場合は、なるべくゲームセンターにいる中で一番上手そうな人(もちろん人柄も大事ですけど)に声をかけてみましょう。上手い人というのは、往々にして誰かに教えた経験があり教えるのが上手いはずです。また、上手い人は近いレベルの人たちのコミュニティを持っていることが多く、そこに入れてもらうことで「上手いことが当たり前」の環境になるので、上達も早いと思います。

家で練習

やりたいゲームがあって、教えてくれる人も見つかりました。でもゲームセンターでプレイしていると当然お金がかかります。特に最初のうちは失敗してすぐゲームオーバになってしまったりするので余計にお金がかかります。なので、できればコンシューマ向けゲームを買ってお金を気にすることなくガッツリ練習するのがいいと思います。

残念なことに、ゲームによってはメーカーがコンシューマ向けゲームを発売することにあまり積極的ではなく、古いバージョンしかなかったり、価格が高騰していたりすることもありますので、そのゲームに詳しい人に聞いてみてください。

ちなみに、「Beatmania IIDX」ですと一番新しいPS2のソフトとコントローラを中古で買うとだいたい2万円くらいでしょうか。Amazonはめちゃくちゃ高いのでヤフオクとかで探すといいです。(それでも定価よりかなりお高め)。またPC環境があるなら無料で遊べるBMSというソフトもあります。(最初はちょっと敷居が高いかと思いますが。)

ビートマニア2 DX専用コントローラ

ビートマニア2 DX専用コントローラ

まとめ

月並みな言葉ですが、百聞は一見に如かずということで、まずはやってみましょう!

音ゲーの楽しみ方

「楽しさを伝える」というお題で記事を書いてみました。

はじめに

音ゲーとは

基本的には、音楽に合わせて出てくるオブジェクトをタイミングよく処理するのが音ゲーです。 具体的な例としては、ビートマニアダンスダンスレボリューション太鼓の達人、などがあり、現在ゲームセンターで稼働している主なタイトルでも十数種類はあります。

書きたいこと

音ゲーを全く知らない人を対象に、音ゲーに共通して言える楽しみ方と、私は音ゲーの中でも「Beatmania IIDX」というタイトルをメインでプレイするので、それについての楽しみ方を書きます。

楽しみ方

音ゲー全般における楽しみ方

冒頭で述べたとおり、音ゲーには様々なタイトルがありますが、その中でも共通した楽しみ方について書きます。

音楽そのものを楽しむ

一言で言うと「音ゲーにはゲーム音楽の域を超えたありとあらゆる音楽」があります。

【ジャンル】

音ゲーには多種多様なジャンルの曲が数千曲以上あります。メージャどころではトランス、テクノ、ユーロビート、ハウス、J-POP、クラシック、など。マイナージャンルになってくると本当に今までであったことのないような曲に出会えたりします。また、音楽を作るアーティストが勝手にジャンルを創作してしまうこともよくあります。ですから、何かしら自分の好きな音楽に出会うことができます。

【アーティスト】

ジャンルと同様に、音楽を提供しているアーティストも数百人以上いますから、お気に入りのアーティストに出会うことができます。

クリアする達成感を楽しむ

音ゲーはゲームなので、ゲーム性(つまり、経験値を得て成長できる仕組み)があります。最初はみんな下手なので誰でもクリアできる簡単なものから、超上級者をも飽きさせない超難しいものまであります。初心者が超上級者のプレイしているところを見ると、エベレストの麓から頂上を見ているような感じになりますが、曲がたくさんあるように曲のレベルもたくさんあるので、目の前の目標に向かって一歩ずつ着実に登っていくことで達成感を得られます。

ただし、人によりますが大抵の場合、成長速度は本当にゆっくりで、超上級者の域に達するには何年もかかります。それに、一度練習を止めてしまうと、成長が停滞したり腕が落ちたりします。音ゲーがよく「部活」に例えられるのはこのようなことがあるからです。

コミュニケーション

これは音ゲーに限った話してはありませんが、共通したタイトルのプレイヤー同士で話し合ったり、プレイヤーを目標(ライバル)として切磋琢磨できることです。特に、上達することを目標にする人にとっては、音ゲーは「部活」のようなものなので、仲間は大切な存在であり、それにより良いコミュニケーションが生まれます。

Beatmania IIDX」における楽しみ方

photo by Dan Dickinson

演奏感

音ゲーは何かを体感させる型のタイトルが多く、「Beatmania IIDX」ではDJシミュレーションゲームと呼ばれているようにDJの操作パネルを模擬したインターフェイスになっています。これによって、実際に楽譜が読めるわけでもなくDJができるわけでもないのに、自分が演奏している気分を味わうことができるのが楽しいところです。また、集中すると本当に無心になって演奏できるあの感覚(スポーツなどで言う、「ゾーン状態」に近いかな?)は、体験した人でないとわからない快感があります。

段位認定

曲をクリアするのとは別に、実力を図るための段位認定というものがあります。課題曲を連続して全てクリアすると、その段位の実力が認定されます。この一段一段がひとつの目標となり、達成感となります。一つの段位を登るのに、人によりますが数ヶ月から数年かかることもあります。

7つの鍵盤と、1つの皿(スクラッチ)

人の指は10本なので、7+1の操作対象に対して1本ずつ指を割り当てると2本余る計算になりますが、位置の関係でそのように単純にはならないところが面白いところです。

例えば、曲のレベルが上がるに連れ、だんだんと対処できない譜面が登場します。そこでどうするかというと、運指(うんし)と呼ばれる「手の使い方の型」のようなものを練習します。この運指にはいくつかの型があり、どれがベストかという議論はずっとされてきましたがどれも一長一短なので、自分にあったものを選びます。そしてひたすら運指を極めていきます。

見えないものが見えるようになる

運指と並んでもう一つ成長するものが、目、つまり動体視力です。音ゲーをやったことがない人によく勘違いされることが、譜面を「暗記している」と思われることですが、暗記なんてそれこそ絶対に無理です。でも、見たことがある人なら分かると思いますが、あんなに早く落ちてくるオブジェクトを見るのも絶対無理!と思うかと思いますが、人間の能力ってすごいもので、練習するとちゃんと見えるようになります。こればかりは体験したことがない人に説明するのは無理です。そういう譜面をプレイしているとよく変人扱いされますが、それもまた楽しいところです。

スコア狙いとクリア狙い

スコア狙いは最終的には満点を目指す遊び方、クリア狙いは最終的にはノーミスを目指す遊び方です。ある程度上達してくると、大体の人がどちらかに傾きます。私はクリア狙い寄りなのでそちらの楽しみ方を書きます。

このゲームの場合、クリアにはいくつかの段階があります。一番段階の低いクリアをするだけなら感覚的にはテストで60点取れれば合格ですが、そこから70点、80点、90点とあり、ノーミスは100点満点しないと得られません。テストを60点から100点にする難しさを想像してもらえると分かると思いますが、すごく大変なことです。何度も何度も98点や99点を取りますが認めてもらえません。だから初めて100点をとった時はものすごい達成感を得られます。

スコア狙いも似たようなもだと思います。とにかく満点はどんなに簡単な曲であっても相当難しいことです。

終わりがない超上級譜面

クリア狙いをしていると、当然どんどん上手くなります。だからと言って、難しい譜面が尽きることはありません。先ほど段位認定を説明しましたが、Beatmania IIDXでは、7級から始まり、、、1級、初段、二段、、、十段、皆伝という18段階があります。皆伝でも相当難しいですが、実際、皆伝も取って全曲クリアしてしまう人は結構います。

それでもまだ難しさを求める場合はどうするかというと、BMSというPCで遊べるビートマニアのクローンソフトがあります。こちらは、曲や譜面を誰でも作れるようになっており、果てしなく難しい譜面があります。(BMSについてはBeatmania IIDXから外れていくのでここでは詳しくは書きません)

様々なプレイスタイル

難しさを追求する以外に、様々なプレイスタイルがあります。例えば、ダブルプレイと言って、一人で二人分の鍵盤+皿を操作するスタイル(公式にダブルプレイ用の譜面が用意されています)や、片手だけでプレイするスタイルなど、遊び方は1つだけではないということも楽しいところです。

まとめ

私は難しさを追求するタイプなので、難しさが強調されてしまったかもしれませんが、初心者でも楽しめるよう配慮されていますので安心してください。それに、何度も述べているように楽しみ方は1つではないので、音ゲーをやってみて自分なりの楽しみ方を見つけてください。

私の音ゲーの楽しさをまとめると、音ゲーは体感型のゲームなので「成長が実感できる」という点が他のジャンルのゲームよりあるかなと思います。あと、音楽の趣味が広がるのも楽しいところです。