女子の生活を技術で便利にするの楽しいね(今回はSwift)

これはGeek Women Advent Calendar 2015、15日目のエントリです。
昨日は@emorimaさんのRubyKaigi 2015 に登壇して思うことでした。

どうも、Java女子部部長のよこなです₍₍ ◝('ω'◝) ⁾⁾ ₍₍ (◟'ω')◟ ⁾⁾
人生初のアドベントカレンダーだよ〜

突然ですが最近、少しくらい健康を意識しようということで
多くの女子に紛れてホットヨガをしています。とてもよいです。

でも一方で、お金の問題がついて回ります(ી(΄◞ิ౪◟ิ‵)ʃ) マニーマニー

今、1ヶ月10,000円ちょいで通い放題なんですがまぁ元とれてるのか時々気になりますよね。
行く度に1回1,500円程支払う都度会員もあるので、通う頻度によっては無駄になります。

いつもレッスン予約サイトで過去の履歴見て
「よし今月は10回行ったからクリアー!」とか
「あと3回行かねば…(ી(΄◞ิ౪◟ิ‵)ʃ) マニー…」とか考えてるんですけど

ひたすらにめんどくさい。

なんとかしたい。

というわけで、iPhoneで専用アプリを作ろうPJを始めました(๑ˇεˇ๑)•¨•.¸¸♪
iPhoneユーザじゃないのに(๑ˇεˇ๑)•¨•.¸¸♪
Android愛しているのに(๑ˇεˇ๑)•¨•.¸¸♪
Java女子部なのに(๑ˇεˇ๑)•¨•.¸¸♪
※ちなみにSwiftは半年くらい前に1ヶ月弱さわってました。

感想

いかんせん文法がよくわからんかったです(⌍་д་⌌)
あと、変化の激しい言語だからか、古い知識とか適当にググって出た情報とかを使うと
「ごめんそれもうdeprecatedなんだよね」って警告マークが出がちです。
(遭遇したdeprecatedは後半で紹介しますね、一応)。 f:id:ihcomega:20151215151314p:plain
こんな感じ。
あ、ググって辿り着いたQiitaが「この記事は最終更新日から1年以上が経過しています。」
って言ってたら要注意かも?

まぁ安心して下さい、段々こうなりますよ。

でも!何でもいいからすぐ動く喜びをfeeeeeeeeeeeeeeelしたいときは
Swift始めやすいしおすすめです(ง `ω´)ง

あと実際iPhone上で動かせるのいいですね!Xcode7から出来るようになったらしいですよ!
前はお金払わないと実機にインストールすら出来なかったのでね…ハードル高かったよね…
とにかく、ウゴイタァァァァァァァの快感すごいよ〜
f:id:ihcomega:20151215194426j:plain:w150ドヤァ

そうそう、私みたいにAndroidユーザの方はAndroid開発をやるか…、
それかあれです、@cero_tさんみたいに何故かiPhoneをたくさん持っている先輩からなら
1つくらいパクってもバレないので、とにかく実機で遊んでみると楽しいとおもいます!!

言いたいこと

欲しいと思ったアプリとかwebサービスとかって大概世の中にもう存在する…
というのはよく聞く話ですね。自分より早/すごいひとがゴージャスなの作っちゃってる。
でも「既にあるかな?」なんてググらずに自分で用意してみるのはいいですね!!

また、こうしてアドベントカレンダーやコミュニティなど色々なきっかけを使って
「こんなことやった」「あんなことやった」ってキャッキャウフフするの楽しいね(ી(΄◞ิ౪◟ิ‵)ʃ)

そうこうしてるうちに、「何かを作る」ことのハードルが下がるの嬉しいね(ી(΄◞ิ౪◟ิ‵)ʃ)
しょうもない日常でさえ技術をさわるきっかけになってゆく!

私の場合、ハードルを下げてくれたのはJava女子部でした。ありがとうありがとう。
もうSNSで何百回言ったか分からないけど、同じような経験出来る人が増えたらいいな〜
と思っとるわけです。

てなわけで、来年もますますGeekなWomenが増えますように!と祈っています。

〜ほぼ完〜


ここから先は出会ったdeprecatedと作ったアプリの紹介ってことで
人様に読んでいただくようなものではない気がしますが自分用に残しときます。

開発環境

Xcode Swift
ver 7.2 ver 2.1.1

Swift2 deprecated&消えたシリーズ

コンソール出力方法

[Before]

println("やっほう")

[After]

print("やっほう")

printlnprintに置き換わったらしい。いきなりコンパイルエラーでて驚くなど。

String -> Intの変換方法

[Before]

let moji = "56"
let suji = moji.toInt()

[After]

let moji = "56"
let suji = Int(moji)

toIntなくなった。String(suji)Int(moji)で変換ってことで分かり易くなったかな。

カレンダーでの年月日取得方法

[Before]

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let year = calendar.component(.NSYearCalendarUnit, fromDate: NSDate())

[After]

let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let year = calendar.component(.Year, fromDate: NSDate())

シンプルになったけど、罠あった。
NSYearCalendarUnitじゃなくNSCalendarUnitYearを使えという警告メッセージが出たので
分かりづらい名前変更に笑いつつ、言われた通り置き換えたら…コンパイルエラーになった…。
調べたらNSCalendarUnitYearいらない子(要出典)で、Yearを使えばよいんだって。何事…。

開発進捗

とにかくまず動けば何でもありやぁああってことで2〜3日ごちゃごちゃやって
現在ここまで出来ている〜

  • 月ごとのタブを追加する
    f:id:ihcomega:20151215165505p:plain:w200 -> f:id:ihcomega:20151215165506p:plain:w200
    ・右上の➕ボタンを押すと現在時刻から年月を取得して1行追加する。
    ・月額ボタンの位置はやばすぎて笑ってる。画面下に固定したいのに。

    f:id:ihcomega:20151215165507p:plain:w200
    ・月毎にカウントしたいので登録済みの月はダブらないようにした。

  • 会費を登録する
    f:id:ihcomega:20151215165508p:plain:w200
    位置のおかしい月額ボタンを押し、ポップアップで月額と都度会費を入力する。
    ・ポップアップ開いたらデフォルトで前回入力した値が入っている。
    ・何も入力しなかったら、会費情報の更新はしない。

  • 元がとれたか計算する
    f:id:ihcomega:20151215165510p:plain:w200f:id:ihcomega:20151215165511p:plain:w200
    ・1回参加したら➕ボタン押す、という雑な操作をする。
    ・月額、都度会費、参加回数から元がとれたか計算する。
    ・0の時➖ボタンを押しても0のままで減らない。

    f:id:ihcomega:20151215165509p:plain:w200
    ・都度会費情報がないときは怒る。

以上!

ということで全然間に合ってなくて色々問題がありますが、
一番ヤバイのは

_人人人人人人人人人人人人人人人人人人人_  
> アプリ再起動したらデータいなくなる <  
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄  

そう、どっかに書き込めてない。方法も知らん。調べる。

今後

上記も含めて今後は以下の対応をしたい(⌍་д་⌌)

  • データを保存できるようにする
  • 月毎だけじゃなくて通算の損得も表示する
  • 現在月日以外も登録できるようにする
  • ボタンの位置がヤバイので直す
  • 可愛くする

一応リポジトリはこれなんですけど、まだまだ自分で直します。
github.com

そんな感じでおしまいです。楽しい。すいすい〜すいふと〜
ぐだぐだ系womanのよこながお届けしました。

明日はofukuさんよろしくお願いしま〜す!