IB上に配置したオブジェクトに対応関係を持たせたい

試行錯誤中。よいプラクティスがあればコメントなどいただけると幸いです。

たとえばIB上で

(上層)
Button A
Button B
Button C
imageView A
imageView B
imageView C
(下層)

のように配置したとして、
buttonAをタップしたときにimageViewAになんらかの変化をさせたい、
ついでに他にプロパティも持たせたい、
でもクラス化はしたくない(このビューの並び順を変えたくない)ときってどうすればいいのだろう…

とりあえずの解決策として、

- (void)_buildHogeInfo {
    NSDictionary* hogeInfo = @{
                          @"mochi" : @{
                                  @"button"  : self.mochiButton, // すでにIBOutlet接続をしてある
                                  @"name" : @"もち",
                                  },
                          @"dango" : @{
                                  @"button"  : self.dangoButton, // すでにIBOutlet接続をしてある
                                  @"name" : @"だんご",
                                  },
                          };
}
- (IBAction)touchDownHogeButtons:(id)sender {
    for (NSString* key in [self.hogeInfo allKeys]) {
        NSDictionary* info = [self.hogeInfo objectForKey:key];
        if (!info) continue;

        NSArray* innerKeys = [info allKeysForObject:sender];
        for (NSString* innerKey in innerKeys) {
            if ([innerKey isEqualToString:@"button"]) {
                NSLog(@"name: %@", [info objectForKey@"name"]); // ここでなんらかの処理
            }
        }
    }
}

こんなことしてました。うーん…

YAPC::Asia 2013でスタッフしてきた! #yapcasia

_人人人人人人人_
> 突然の高熱 <
 ̄Y^Y^Y^Y^Y^Y ̄

2日目、しかも半日のみの参加になってしまいましたが、
去年に引き続き、YAPC::Asiaにスタッフとして参加させていただきました。

instagram.com
ドラ情報です


幕間にて、制作したムービーを流していただいたりもしました。
音楽をこっそり担当しておりました。ぴこぴこ。



牧さん、くしいさん、ありがとうございました。お世話になりました。
来年はアドバイザーとしてよろしくお願いします。お世話になります。

....

感想など書いていたのですがとりとめなく長くなってしまったので、別のエントリにて。

株式会社ディー・エヌ・エーに入社しました

13新卒として、DeNAに入社していました。
Perl hackersにかこまれた、とってもすてきな環境に身を置かせていただいています。
早く一人前にならねばと奮闘中。

以前取材をいただいたときにちらりと漏らしていたのですが、
お世話になった(なっている)方々やコミュニティに、いろんなかたちで少しずつ恩返しをしていくべく、いろいろ画策しております。

そんなわけで今年のYAPCでは、
ボランティアスタッフとしてだけでなく、企業スポンサーとしても少しだけお手伝いをしています。
当日をお楽しみに!

チケットの購入はこちらからどうぞ。8/11まで!

Perl Beginners#9 とITエンジニア平成会#0 に行ってきた!

Perl Beginners #9

Perl初心者さんと中・上級者さんが集う面白い場でした。
ytnobodyさん、主宰ありがとうございます!
Perl Beginners

同期数人と押しかけましたが、こういった勉強会に初めて参加したひとたちが、
新参者ウェルカムなPerlコミュニティの空気を体験して、みんな一様にほくほくしていたのがうれしかったです。
みんなYAPCいこう!

ビギナーズセッションの「質問者が登壇するしくみ」はScala勉強会(たしか)が出典らしいですが、
なかなかハードル高い感じがするので「あらかじめどこかに質問を投げてもらっておいて、それを会場で解決していく」とかでも面白そうだなっておもいました。
うまく回るしくみをつくるって難しい。

あと、懇親会で id:moznion くんに「ブログ超たすかりました!!!!」と言ってもらえて嬉しかったので
そろそろまた日々の発見をちゃんと形に残していきたいです。
ここ数ヶ月、Perlにがっつり触れていたにもかかわらず、まだこれしか書いてない…ひどい…
Perl - for内の変数のうごき - Qiita

ITエンジニア平成会 #0

ただの飲み会だと思ってたら居酒屋でみんなでPC広げてカジュアルにLTする楽しい会でした。
わたしは若手webエンジニア交流会で使った資料をつかいつつ、自己紹介とテンスウリズムの話をしました。

#0は(ほぼ)Heisei.pmでしたが、(それも面白いとは思いますが)
このメンバーをコアにして、#1からは言語や職種の垣根をこえた会にしていくようですよ。わくわくしますね!

平成というくぎりは89年生まれ〜で、社会人人口的な意味ではこれから少しずつ増えていくとおもうので
じわじわ規模が大きくなっていくのを楽しみたいです。

さくらVPSにPostgreSQL9.2とpg-gem(0.14.1)を入れる

herokuからお引越しをしようかなと画策中。
いくつか躓いたのでめもめも。

環境

さくらVPS (CentOS 5.5)

PostgreSQL9.2をインストール

デフォルトでyumにあるバージョンが低いので、
入れたいバージョンに合ったRPMリポジトリをDLしてきて、入れます。

# rpm -ivh pgdg-centos92-9.2-6.noarch.rpm 
# yum -y install postgresql92
# yum -y install postgresql92-devel

でインストール。

参考:http://wdsdx.com/yum_repo_pgdg

pg-gemをインストール

最終的にはこんなんでいけました。

$ gem install pg -v '0.14.1' -- --with-pg-include=/path/to/pg-include/ --with-pg-lib=/path/to/pg-lib/

以下に顛末を。


ふつうにgem installのみでは

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
	ERROR: Failed to build gem native extension.

        /usr/local/rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/rvm/rubies/ruby-1.9.3-p429/bin/ruby
	--with-pg
	--without-pg
	--with-pg-dir
	--without-pg-dir
	--with-pg-include
	--without-pg-include=${pg-dir}/include
	--with-pg-lib
	--without-pg-lib=${pg-dir}/lib
	--with-pg-config
	--without-pg-config
	--with-pg_config
	--without-pg_config

こう出たので、locate libpq-fe.hして出たパスを指定してあげたら

$  gem install pg -v '0.14.1' -- --with-pg-include=/usr/pgsql-9.2/include/

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
	ERROR: Failed to build gem native extension.

        /usr/local/rvm/rubies/ruby-1.9.3-p429/bin/ruby extconf.rb --with-pg-include=/usr/pgsql-9.2/include/
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/rvm/rubies/ruby-1.9.3-p429/bin/ruby
	--with-pg
	--without-pg
	--with-pg-dir
	--without-pg-dir
	--with-pg-include=${pg-dir}/include
	--with-pg-lib
	--without-pg-lib=${pg-dir}/lib
	--with-pg-config
	--without-pg-config
	--with-pg_config
	--without-pg_config
	--with-pqlib
	--without-pqlib
	--with-libpqlib
	--without-libpqlib
	--with-ms/libpqlib
	--without-ms/libpqlib

まだだめ。

ゴチャマゼノオモチャバコ: さくらVPS(CentOS5.7)でRubyだDBIだdbd-pgだ などを見ながら
pgのライブラリパスを指定してあげたら、

$ gem install pg -v '0.14.1' -- --with-pg-include=/usr/pgsql-9.2/include/ --with-pg-lib=/usr/pgsql-9.2/lib/

Successfully installed pg-0.14.1
1 gem installed

できました:D

音大生が卒業制作にアプリを作ったよ!「テンスウリズム」

テンスウリズムというiOSアプリを作りました。

web

3人で制作しています。
わたしは実装(Objective-C / Ruby)、動画のBGM制作などを担当しました。

なにをするアプリ?

「1日を100点満点で記録する」ライフログアプリです。
毎日テンスウをつけることで、自分の調子が色とグラフによって可視化されていきます。
つけたテンスウは、タイムライン形式とカレンダー形式で振り返ることができます。
ソーシャルにポストしたり、友達の調子を見ることもできます。

おすすめポイント

  • 3日坊主でも続けられる

起動して、テンスウをつけるだけ。
日記の苦手なわたしが、なんと半年以上も続いています。
振り返ってみると、テンスウや短いコメントにこめた思いから得られるものが、あったりなかったり。
色でテンスウを可視化しているので、スクロールするだけでも楽しめます。

  • 友達の存在がモチベーション維持につながる

Facebook上でこのアプリを使っている友達のポストを見ることができます。
テンスウとコメントから得られる情報って、少ないようで意外と多いんです。
会った時の話のネタに。疎遠になったあの子と、連絡を取るきっかけに。はたまたネットストーキングに。
使い方はあなた次第!

音大生が、卒業制作としてiOSアプリをつくった理由

わたしの所属している学科(国立音楽大学コンピュータ音楽研究室)は、ライブ・エレクトロニクスとよばれる形態の音楽や、映像・パフォーミングアーツなどを取り入れたインターメディアアートの創作を行う学科です。

その中でいろいろな作品に触れ、自身もいくつかの創作を行い、そして学外で得たスキルや体験などから、わたしは
「自身の内にあるものを表現することよりも、周囲や社会のニーズを汲み取り表現すること」に興味があるのではないか、という答えを出しました。

この4年間で身につけたものを出しきる機会として、どんな形態でなにを作ろうかと考えていたときに、ちょうどデザイナーのましさんから、このアプリのデザインをいただきました。
ふたりの真摯さと熱にほだされて、よし、ここに乗っかろう、これをわたしの集大成として作りきろう、と思えたことを覚えています。


とはいえ、妥協しないからこその衝突はままあって…
開発中は楽しいと苦しいが綯い交ぜでしたが、喉元すぎればなんとやらですね。
いまは無事にリリースすることができて、ほっとしています。

とはいえ既知のバグや、もうちょっとさくさく動くようになどといろいろ改善の余地はあるので、これからもアップデートを続けていきたいと思います。
よろしければぜひ、ダウンロードしてみてください!

ダウンロードはこちらから!

最後に、機会を与えてくれた@、すてきなデザインを作ってくれた@両氏、ありがとうございました!

最近Qiitaに投稿したtipsまとめ

Markdown(kobito)でささっと書けてぽいと投稿できるので、
最近はもっぱらQiitaに投稿しています。

Objective-C - よく使うフォーマット指定子 - Qiita

Objective-C - 複数アカウントに対応したカスタムツイートの投稿方法 - Qiita

Objective-C - NSArrayの差分を取る - Qiita

iOS - アプリ内のデータをCSV形式でメール添付する - Qiita

はてダとのうまい棲み分けを考え中。