Programming

ハッカーズバーでのライブコーディングと近況報告など

 Author:fumiyasac

20141213

3ヶ月ぐらいブログのほうをほったらかし状態にしてしまいましたが、久しぶりに書きたい事ができたこと、また12/13に六本木のハッカーズバーに参加してきたこともありその事について書きたいと思います。

1. 最近はiOS(Objective-C & Swift)とRailsを書いています

今年の10月下旬よりiOSの勉強と個人的にアプリ開発を始めました。
PHP(CakePHP)からRailsを扱うことにもなりました。
それに伴いまして、下記の勉強会にも参加したりして素敵な仲間たちと一緒にワイワイやりながら開発しています。

Swiftビギナーズ倶楽部

※コワーキングスペースCo-Edoさん、勉強会&プライベート含めいつも本当にありがとうございます。
いっぱい利用させていただいておりますm(_ _)m

2. ハッカーズバーってなんぞ?

【ITのもう一つの聖地・六本木にある素敵な場所】

ハッカー(プログラマ)の方が経営するバーで、東京ミッドタウンの向かいにあるおしゃれな空間です。ここではDJではなく、ハッカーの方々の華麗なライブコーディングを鑑賞しながらお酒を飲むという、プログラマにとってはまさに心が踊るような場所でした。

Hackers Bar

余談なのですが、「ブルースクリーン」「カーネルパニック」という、ちょっぴり恐ろしい名前のカクテルもありますw

今回は株式会社LiBさんが主催する下記のイベントがありましたので、飛び入りみたいな形にはなってしまいましたが、せっかくの機会を頂いた事、下記にも述べさせていただいていますことに対して「せっかくだから気晴らしにイベントに登壇してみたら?」という後押しもありまして今回参加することにしました。

Hacker Girls Bar #3 Live coding Holy night!

お誘いのメッセージ頂きました、松本さん・司会をして下さった武井さんをはじめ株式会社LiBの皆様に、本当に感謝しております。

そして参加された皆様も本当にお疲れさまでした。
皆さんのおかげで、元気をもらう事ができました!

3. 僕がやったことはなに?

今回は今取り組んでいるアプリの中でカレンダーを自作する機会があったので、せっかくだからカレンダーの変形版(UICollectionViewを使用したバージョン)を15分でコーディングするという、ほとんど暴挙に近い事をしました。

一応15分でカレンダーはできたのですが、夜景を表示する部分は最後のしめの挨拶の前に発表ができました。まあ、コーディングに夢中になりすぎるあまり水分補給を怠ってしまったのはちょっと失敗でしたね….。

下記のリンクでその時のサンプルをGithubがありますが、いかんせん短時間で作成したものなので、こんごはもっとカスタマイズして実用にも耐えうるものにしていかないといけないクオリティのものなんですが、よろしければご覧下さいませ。

Xmas Calendar (夜景表示付き)

以下UICollectionViewを使う際のポイントになる点を挙げていきます。

※下準備1)
あらかじめ下準備としてStoryBoard上のViewControllerには、CollectionViewを配置し、プロパティの設定をしておきます。

※下準備2)
新たにUIViewControllerを配置しDetailViewControllerクラスとの紐付けを行った後はImageViewと戻るボタンを配置し、こちらも同様にプロパティとIBActionを設定します。

※下準備3)
UIViewControllerからDetailViewControllerへセグエ接続をし、Identifierを”toDetail”として、DetailViewControllerには、前の画面へ戻る処理を記述します。

※下準備4)
CollectionViewの中にセルがあるので、そのセルの中にラベルを1個配置します。この時、tagの部分の数値を「1」にして下さい。

【ViewController.h】

まずは、夜景表示クラスの変数(DetailViewControllerクラスの変数)にアクセスできるようにします。

  1. #import "DetailViewController.h"

次にdelegateを記述します。

  1. @interface ViewController : UIViewController<UICollectionViewDelegate,UICollectionViewDataSource>

【ViewController.m】

ここでは、CollectionViewでどのようにしてカレンダーの並びを実現させるかの部分に関しての説明をします。

CollectionViewはTableViewと非常に良く似ています。
まずは、セルの配置数を決めます。

  1. -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
  2.     return 42;
  3. }

CollectionViewに実際の値を入れるところですが、こちらはカレンダーの並びを計算し、値が入る部分にだけ値を入れる処理を行っています。

  1. //コレクションビューのセルに値を格納
  2. - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
  3.     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
  4.     UILabel *calendarBean = (UILabel *)[cell viewWithTag:1];
  5.     if(indexPath.row < dayOfWeek - 1){
  6.         str = @"";
  7.     }else if(indexPath.row == dayOfWeek - 1 || indexPath.row < dayOfWeek + maxDay - 1){
  8.         str = [NSString stringWithFormat:@"%d", tagNumber];
  9.         tagNumber++;
  10.     }else if(indexPath.row == dayOfWeek + maxDay - 1 || indexPath.row < 42){
  11.         str = @"";
  12.     }
  13.     calendarBean.text = [NSString stringWithFormat:str,indexPath.row];
  14.     calendarBean.alpha = 1;
  15.     return cell;
  16. }

CollectionViewをタップした際の処理を記載します。今回は、値が入っているセルをタップした際のみ、セグエを発動させるようにします。

  1. //ビューセルタップ時の処理
  2. - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
  3.     if(indexPath.row < dayOfWeek - 1){
  4.     
  5.     }else if(indexPath.row == dayOfWeek - 1 || indexPath.row < dayOfWeek + maxDay - 1){
  6.         //日付の入る部分はセルのタグを設定する(日にち)
  7.         targetDetailId = [NSString stringWithFormat:@"%d", indexPath.row];
  8.         [self performSegueWithIdentifier:@"toDetail" sender:targetDetailId];
  9.     }else if(indexPath.row == dayOfWeek + maxDay - 1 || indexPath.row < 42){
  10.     
  11.     }
  12. }

※カレンダー部分の具体的な計算方法に関しては、今回は割愛しますが、近日勉強会の資料を当ブログで展開致しますので、しばらくお待ち下さい。

【この日のタイムライン】

本当に見ているだけで、興奮冷めやらぬ感じに夢中になってしまい、あまり写真がとれませんでした....
イベント中の様子をFacebookで投稿しましたので、こんな感じでやっています的なものを見ていただければと思います。
良い刺激を頂く事ができて本当に楽しい時間でした。ありがとうございます!

4. 近況と感謝の気持ち

下記、最近の出来事で私事になります。

僕は先週に一人の大切な友人に不幸がありました。18歳のときからの知り合いで共に同じ時間を過ごし、楽しい事やつらい事も彼と一緒に色々経験してきました。また、iOS開発についても同時期にスタートしたことなど共通点も多くありました。

先週にこのことを聞いた時に、やはり大きなショックと同時に自分の現時点での状態に対して大きな焦りも感じました。

その結果、大切なご友人や仲間達に対して行き過ぎた行動をとろうとした事、自分自身にもいたわりを忘れてしまいそうになっていた自分がいました。

このような行動をとってしまい不快な思いをされた皆様には本当に申し訳なく思います。

まだそれほどに時間が経ってはいませんし、完全にまだ立ち直っているとは言えないかもしれませんが、近いうちにいつも通りの「プログラミングを愛する元気」な自分の姿をお見せ出来ればと思います。

今週も勉強会があるのでまずはその日の準備もそうですし、今作成中のアプリ・仕事・その他諸々で自分のできることを一歩一歩していこうと思います。

あとは、自分の現状を聞いてくれた職場の方々・家族・友人の皆様にはこの場をお借りして感謝の意を述べたいと思います。