また1からこつこつと

最高はひとつじゃないと信じてまたがんばります。

#SPAJAM 2017 東京C予選で優秀賞を頂いた。

#SPAJAM 2017 東京C予選にチームで出場しまして、結果的に優秀賞をいただきました!


メンバーのみなさんお疲れ様でしたm(__)m
今回もほぼほぼ徹夜での作業、大変だったけどかなりいいハッカソンだったなと思います。

東京C予選のテーマは「子ども」で、僕らが作ったのは「家庭内仮想通貨システム」である「Pocket money」というアプリです。
ちょまどさんがいい感じに呟いてくれてたので引用。



実際につかったスライドはここから見れます。

今回チームでこだわったところは、APIの設計でした。
はじめの2時間くらいはずっとAPI周りの設計をやってて、本番開発さながらの仕様書をまとめました。
まず機能ごとにどんなデータをサーバに格納して、どんな処理をさせてそれをiOS側に渡すのかといった話し合いをして、そこからさらにスマートに機能を集約していった結果、20個のAPI
ができました。
とはいえ、スプレッドシートに仕様をまとめるだけでは動かないわけで、そこからさらにMySQL+PHPでごりごりハードコーディングをする作業になります。自分がバックエンド担当してたんですが、初日はほとんどXcode開いてないです。
ただ、仕様がしっかりと決まっているのでバックエンド側を作っていくと同時にフロント側のモデルもどんどん作られていくという、非常に気持ちのよいフロントーバックの連携だったなと思います。

チームメンバー4人のうち、1人がiOSでのAPIリクエスト周りを担当、1人がバックエンドを担当、2人がフロントのデザイン周りを担当するといったフォーメーションでした。デザインは個々の感性を頼りにして気合でどうにかする、みたいな開発方法でした。

でもいままで出たハッカソンの中でも1番楽しかったし、なにより雰囲気がかなりよかったなと思っています。会場であるYahooLodgeが新しくて、物理的にも明るいというのもあるかもしれませんが、チーム毎の雰囲気だったり会場全体の雰囲気がすごくほんわかしていました。
いいハッカソンだったと思います!
女性の割合がめちゃ多かったのも要因の1つだと思います。


男子オンリーのチームは僕らだけだったらしい、ジェンダーバランス!

ちなみに、この案を出したのは弊チームのメンバーでした。

あと、個人的に他のチームでおもしろいなと思ったのは、WWDC2017で発表されたばかりのARKitをフル活用していたチームです。
プレゼンでも、公式ドキュメントしか情報がない中での開発だと仰っていましたが、日本時間火曜の深夜2時に出たフレームワークを土曜日には使いはじめるってめちゃくちゃかっこいいです。

iOS11 betaの新しいコントロールセンターが見えたときに会場がざわついたのは、さすがスマホアプリのハッカソンだなぁという感じでめちゃよかったです👍👍


優秀賞チームは全国の予選でかなり選ばれているので、これから本戦にいけるかどうかはわかりませんが、ぜひ温泉に行きたいのでいけるよう願っています。

ScratchDay 2017 in Kashiwa を開催しました。

5月14日(日)に柏市立柏中学校でScratchDay 2017 in Kashiwaを開催しました!
scratchday-kashiwa.org


f:id:mjk0513:20170518201909j:plain
ご参加くださった皆様、大変ありがとうございました。
来場者数は170名以上で、昨年を大きく上回りました。

mjk0513.hateblo.jp
↑去年の記事です。

現在アーカイブ用映像などは鋭意製作中ですので、もうしばらくお待ち下さい。


柏市教育委員会学校教育課副参事の佐和さんとのトークセッションは、ノープランだったのにも関わらずかなりいい感じなできになったと思います。
f:id:mjk0513:20170518202738j:plain
我々のような一民間団体と行政が本気になって取り組むプロジェクトがどこまで本気かというのをお見せするいい機会になったのではないでしょうか。
いろいろと次に繋がる展開が見えてくる、そんなセッションでした。

今回は柏市教育委員会が共催として入ってくれただけではなく、様々な方々にご協力いただいています。
例えば、Microsoft様にはSurfaceを貸し出していただきました。



最後に、この話はイベント中になんどもしていたのですが、プログラミング教育を一過性のブームとして終わらせないことが大切だということを、改めて書いておきます。
少し前まではまったく考えられなかった規模で、プログラミング教育が広がっています。
完全にブームです。
しかし、我々中にいるメンバーは、このブームが終わったあとのことをそろそろ真剣に考えたほうがいいと最近感じています。
大切なのは、ブームだともてはやされている時期にどれだけメジャーにするかです。言い換えるならば、どれだけ体力を付けるかだと思います。
これはビジネス面もそうですが、学問の面からも同じことが言えるはずです。きっちりと体系化していく作業をしなければならない。
そういったことを考えてみたいなぁとここ最近やんわりと思っています。
まずは圧倒的サーベイからですね、がんばります。

2017/05/22 追記
振り返りPVを公開しました。
youtu.be

【Swift3】 presentで画面遷移したときに遷移先のViewにNavigationBarを表示させておく

let nextViewController:NextViewController() = NextViewController()
let navigationController = UINavigationController(rootViewController: nextViewController)
self.present(navigationController, animated: true, completion: nil)

rootViewControllerに指定して、navigationControllerをpresentしてあげるだけ。

【Swift3】UITableView separator のおはなし

UITableViewのcellとcellの間にある線がある。これをseparatorという。(そのまま)
こいつに関して幾つか知見を得たのでメモ。

画面の左端まで線を到達させる

separatorはデフォルトでは画面の左端まで到達せずに切れてる。
f:id:mjk0513:20170330233851p:plain:w300
これを左端までつける方法。

tableView.separatorInset = .zero

これでOK。
f:id:mjk0513:20170330233916p:plain:w300

色も変えることができる。

tableView.separatorColor = UIColor()

f:id:mjk0513:20170330234848p:plain:w300

ここまでカスタマイズできるのはすごい。

ただ、これだとindexPath == 0、つまり1番上のcellの上に線が入らない。
こういったことを実装したい場合は、cellにUIViewを追加するしかないっぽい。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 let cell = UITableViewCell(style: .default, reuseIdentifier: "MyCell")
 cell.textLabel?.text = items[indexPath.row]
 if indexPath.row == 0{
  let separatorView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 1))
  separatorView.backgroundColor = UIColor.red
  cell.addSubview(separatorView)
 }
 return cell
}

f:id:mjk0513:20170330235420p:plain:w300

これextensionつくってgithubで公開してる。
github.com

ただ、didSelectRowされたときに、deselectRowを指定してると描画が変な感じになっちゃう。
どうすればいいか考えてみます。

【Swift3】 UITableViewのHeaderをカスタマイズする方法

今開発中のアプリでUITableViewのHeaderをイジる必要があって、いろいろ調べたのでメモ。

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
 //code
}

ではなくて、viewForHeaderInSectionを使ってUIViewをリターンしてあげる。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
 let headerView:UIView = UIView()
 headerView.backgroundColor = UIColor.white
 return headerView
}

あとはこのViewにいろいろと追加していけば好みのものがつくれる。

headerの高さは、tableViewのメソッドで指定する。

tableView.sectionHeaderHeight = CGFloat()

仕事でコード書くと知らないことを知れるのでおもしろい。
いろいろと勉強になる。

四畳半神話大系がnetflixにある

netflix四畳半神話大系が配信されてる。
www.netflix.com
昔一話だけみてそれ以来見てなかったけど、改めて見るととてもおもしろい。
はやく夜は短し歩けよ乙女の映画みたい。
京都に住みたい。

以上です。

SiriとRaspberryPiで電気をつけたり消したりする

RaspberryPi3を買ったのでなんかしたいなと思い、友人が前にやっていたRaspberry Piからの家電制御をやってみた。
こちらが完成品。
vimeo.com
Siri(HomeKit)を使って机の電気が着いたり消えたりしています。

方法

qiita.com
参考というかほとんどはここに書いてある通りです。
LEDの変わりに以下の部品とビニルコード、電源プラグ(オスーメス両方1つずつ)をはんだ付けして、ON/OFFを制御するようにしています。
akizukidenshi.com
www.monotaro.com


AppleTVが家にあるので、「家から離れた時」や、「日没後」などといったスケジュールにより制御することも可能です。
ベッドに入ってしまい起き上がるのがめんどくさいときにとても便利です。

素晴らしい。テクノロジー万歳!