UIDatePickerからIntを取り出す、およびその逆(Swift4、初心者向け)

最近、Swiftを書き始めました。主にモバイルアプリを動かすための言語なので、いろいろ分からんところが多かったです。

はまったところもいくつかあり、今回は日付について、書こうと思います。

UIDatePicker←→年月日のInt

直接的にはまったところは、UIDatePickerから年月日の値をそれぞれInt型の変数で取り出す、およびその逆です。 結論としては、コードは以下のようになります。

 // Int → Date Picker

let calendar: Calendar = Calendar(identifier: .gregorian) 
let year = 2018 
let month = 2 
let day = 18 

let dateComponent = DateComponents(year: year, month: month, day: day) 
let date = calendar.date(from: dateComponent)! 
dateComponent .setDate(date, animated: false) 
// Date Picker → Int 

let calendar = Calendar(identifier: .gregorian) 
let pickerDate = datePicker.date 
let dateComponents = calendar.dateComponents([.year, .month, .day], from: pickerDate ) 

let year = dateComponents.year! 
let month = dateComponents.month! 
let day = dateComponents.day! 

DateとNSDate

UIDatePickerの使い方をネットでググると、NSDateをセットしろという内容の記事にあたることがあります。 しかし、上記の通りNSDateは使用していませんし、UIDatePickerのsetDateメソッドでも記載がありません。

それもそのはずで、Swift3からはNS〇〇型はおおむねNSをとった〇〇型に移行している感じです。*1

2014年にSwiftが登場して以降、Objective-C→Swiftという流れがあり、Swiftでも毎年のように1→2→3→4とバージョンが上がっています。3から4はそうでもないですが、それ以外は大きな変更です。 ググるときには、Swift3がリリースされた2016年9月*2以降の記事かどうかのチェックが必要だと改めて思いました。

もくもく会に参加しました #rettypy (Python学習記録⑥)

こちらのもくもく会に参加してきました。

retty.connpass.com

@shinyorkeさん主催の人気のもくもく会のようで、僕はなんとかすぐに予約*1できました。

が、当日あろうことか僕は遅刻をかましてしまいます。申し訳ありませんでした。

主催者に中に入れてもらってもくもく会参加となりました。

実はもくもく会自体が初めてだったので、どんなもんかと思って来ましたが、

割りと静か

という印象でした。マジでもくもくじゃん……。とはいえこれはもくもく会や、その時のメンツによってかわってくるようです。

お昼ごはんは外で食べました。僕が行ったのはこちら→旬彩 本多 (しゅんさい ほんだ) (赤羽橋/割烹・小料理屋) - Retty

f:id:alek3:20180210125954j:plain

うまかった。

雑談ではshinyorkeさんの野球データの話が面白かったです。分析手法というよりは、その前段階の話です。例えば、

  • ピッチングに関しては、どこに投げたか、球速、回転数など、かなり細かくデータが取れる。
  • 日本とアメリカではデータの活用法、すなわちピッチャーのバッターに対する対策の立て方が違う。アメリカの方がアバウト。なぜなら、アメリカでは30のチーム同士で戦うため、そもそも同じピッチャー対バッターの対戦が少ないから。

戻ってきてからはまたずっと作業していました。今度はちょいちょい会話しているところもありましたね。

会場の様子↓

ちなみに僕はここに写ってなくてさらに左の方の机で作業していました。

ところで僕自身何をしていたか書くのをすっかり忘れていたのですが、こちらの技術書を写経していました↓

gihyo.jp

三角関数のグラフを出力して喜んでいたり、Pandasの基本的な項目を学習していたりしました。

日が暮れて少し空気がひんやり*2してきたころ、「成果発表会をするよ」と言われました。

ぼく(成果発表とは……?)

先ほど言ったとおりもくもく会初参加の僕は知らなかったのですが、もくもく会はだいたい最後に今日の成果を皆で共有します。

僕は資料等を全く作っていなかったので、慌てて数分で作り発表しました。

僕みたいな拙い発表でもフィードバックを頂けて、本当に感謝しています。

他の発表だと、色の表現方法には、RGBを使う方法とインデックスカラーを用いる方法があるという話が初めての内容で興味深かったです。

そんなわけで、参加して非常によかったと思っています。次回も参加します。

*1:数時間で予約いっぱいになった記憶があります。結局なんやかんやあって結構繰り上げがあったように見えます。

*2:実際ちょっと寒かった。最近冷え性気味。

PyQレビュー(Python学習記録⑤)

こちらの記事の続きです。

alek3.hatenablog.com

本日、ライトプランを解約しました。1ヶ月と1日での解約となります。

実績

だいたい全部解いての解約ですね。残りの1割については、これやっている意味ないなと感じて飛ばしたものです。

サイト上では所要時間68時間と書いてありますが、半分以下の時間で終わりました。多分別言語をやったことがある人は同じくらいの時間で終わります。

良い点・悪い点追加

基本的に良い点については前回の記事と同様です。問題を解いて即座にフィードバックをもらえるのは大変ありがたいです。

また、サクサク進むので、自分勉強しているぜという感覚が湧いてきてそれも良いです。

悪い点に関しては追加で一点挙げると、「クエスト内の問題を解かないと次の問題を見ることができない」ことです。

例えば以下の画像は、「list,for文」について学習する章となります。

f:id:alek3:20180204163644p:plain

「ループの利用」という文の下に四角形が7つありますが、これは全部で7問ありますよーという意味になります。

サービスに登録すると、この問題を見ることができますが、なんと1問目しか見ることができません。問題を正解して初めて次の問題を読むことができます。

とりあえず問題を全部見たいと思っても全然見れなくて、非常にストレスフルだなと思いました。

まとめ

改善して欲しいところもありましたが、Pythonの文法を学ぶにはベストなサービスだと感じました。文法を学んだ上で、Webアプリケーション、データ分析、機械学習といったトピックに進むといいのかなと思います。

ボードゲーム会を企画してみた

タイトルの通り、ボードゲーム会を企画して昨日開催しました。企画中に思っていたことを時系列で書いてみようと思います。

構想段階

 やろうと決めたのは今年の始めです。10人前後でやってみたいなーって話していたら「じゃあお前企画しろや」「あっハイ」となりました。

 実は僕自身はボドゲをあまり持っていないので、持っている友人にまずは提案しました。快諾していただいたので、企画として進められることになりました。

準備段階①

 やるべきことを順にやっていきます。

  • 日程決め
    • 主要人物の行ける日を決定します。だいたい2~3週間後くらいにしました。
  • 場所決め
    • アクセス良いところで。
  • ゲーム選択、人数設定
    • このあたりは同時並行で進めますが、どれくらい呼ぶか、何をしたいかを決めます。
    • ちなみにボードゲームは6人の壁、8人の壁、10人の壁があると思います。ここを超えるとできるゲームが少なくなります。
    • 基本的にお互い持っているゲームの中からやりたいものをチョイスしていく感じ。
  • 会議室予約
    • 検索するといくつかWebサービスがあります。今回はスペースマーケットを使いました。

 具体的な数字の話をすると、20㎡あれば10人くらい入っても大丈夫ですね。だいたい収容人数が「~○○人」って書いてあるんですけど、それの0.8倍くらいなら快適に過ごせると思います。

準備段階②

 人を呼びます。今回は僕と友人の2人で呼びました。

 結局僕を合わせて11人にOKをもらえました。感想としては二つあって、一つは、レスの速い人は好感度が急上昇します。特に、最初に送った人は15秒くらいで返してきた気がするので、もうすごいなって感じですね。もう一つは意外とみんな乗ってくれるということですね。僕は企画を全然してこなかった人なんですが、皆さん快く対応してくださりました。

 ありがたいことに人数がおもったより増えたので、持っていくゲームで回せるかどうか、二つのグループに分けるべきか悩んでいました。

当日①

 当日参加した人はおやっと思ったかもしれませんが、結局現地に来たのは僕含めて8人です。3人ドタキャンが出ました。こういうイベントを企画すると確率的にドタキャンが出るので、ちょっと多めに呼ぶのがいいと思います。
 ちなみにIT系のイベントだとこんな記事がありますね。→ 【connpass × のびすけ対談】勉強会あるある!イベントのドタキャンにどう対処する? | dotstudio

 僕は一番最初に会場入りして、徐々に集まってきて開始することになりました。

当日②

 当日のゲームは以下の通りです。いくつか持ってきた中から、その場のノリで決まりました。

  • The残業
  • ワンナイト人狼
  • お邪魔もの
  • コヨーテ
  • インサイダーゲーム

どれもカードゲームなので持ち運びが簡単ですね。

ちなみにルー説は他の人がうますぎて全部おまかせすることになりました。

まとめ

当日は楽しんでもらえたと思うので、反省はしつつ次回もやってみたいですね。こういうのは一回やってみると慣れます。

#pynyumon LTしました(Python学習記録④)

こちらでLTさせていただきました。

python-nyumon.connpass.com

  スライドはこちらです。

speakerdeck.com

自分の発表について

よかったところ

  • とりあえず発表する経験を得た

  • HDMIケーブル挿しても映らない状態が1分くらい続いても折れない強い心を身に着けた

    • 接続チェックはしていたんですけどね…(言い訳  

悪かったところ

  • 時間計ってなかった

    • 時間めっちゃオーバーして恥ずかしい
    • さらに早口になった
  • テーマがマイナーすぎた

    • 世間の人達は麻雀の分散の話をされてもピンとこないです
  • もっとビジュアルに訴えるスライドを作るべきだったかも

  • ぼっち参戦は辛い

    • 懇親会でなけなしのコミュ力を使い果たした
    • とはいえTwitterのフォロワー5人増えたしよかった

他の人の発表について

自分のことでいっぱいいっぱいだったので記憶があまりないです。これまた反省事項ですね。

画像処理の発表・LTがいくつかありました。この分野に関しては全く知識がないのですが、Pythonのライブラリ群の幅広さを感じました。

また、下記の発表について、

www.slideshare.net

これを見ると、年ごとに色々な活動をしています。python始めて1年位でかなりのアウトプットをしています。

とりあえず1年間は頑張ってみようかなーと思っている私にとって、大きく希望が湧いてくるお話でした。

次はこれにでます。→Pythonもくもく自習室 #7 @ Rettyオフィス - connpass

PyQやってみた(Python学習記録③)

PyQという、オンラインでのPython学習サービスを購読し、現在勉強しています。

pyq.jp


どこでこのサービスを知ったかというと、例によって以下の記事の影響です。

shinyorke.hatenablog.com

めちゃくちゃバズったので覚えている方もいるでしょう。

とりあえず上記記事でいう「Python中級者」になるべく努力していきたいと思います。

私は以下のコースを登録しました。

プログラマー向けPython文法 - PyQ

実際何をするかというと、ひたすら写経か地道な問題演習です。上記ページで見ても分かるように、基礎的かつ重要なトピックが並んでいます。

また、所要時間68時間と書かれていますが、なんとなくもうちょっと早く終わる気がしています。

年始の休みの間にレッスン数で言うと4割くらい終わりました。しかし、年始の休みが終わって以降、全く取り組めていません。反省ポイントです。

以下、使ってて良い点と、直して欲しい点をいくつか挙げます。

良い点

  • 写経と問題演習を数多くやらされるので、頻出の文法事項は自然と覚える
  • WEBブラウザ上ですべて完結する手軽さ
  • 判定がめっちゃ速い
  • コード補完がある
  • サクサク進む
    • 楽しい
  • 料金体系が実質的に日割り
    • 途中で解約すると余った日数分は返金される

かなり快適にコードを書くことができます。

直して欲しい点

  • わかっているからレッスンを飛ばしたい、と思ってもちょっと面倒
  • 振り返りを読みづらい
    • エストが完了すると、振り返り欄に感想や理解度を書くことができる
  • メンターありのプランが満員で使えない状態で複雑な気持ち

基本プランが2980円/月で、いつでもプランは止められるので、さっさと終わらせるが吉。

まとまった時間を取れて、Pythonを学び始めたい、という人にはオススメできます。

『独習Python入門 1日でプログラミングに強くなる』は1日で終わるのか(Python学習記録②)

A.終わります。

今回はこちらの本を学習しました。

独習Python入門――1日でプログラミングに強くなる!

独習Python入門――1日でプログラミングに強くなる!


そもそもなぜこの本に出会ったかというと、以下の記事の影響があります。

shinyorke.hatenablog.com

めちゃくちゃバズったので覚えている方もいると思います。

僕は仕事ではJavaを書いていることが多いですが、「第二言語」が欲しいなと常々思っていて、今年はPythonを学ぶことにしました。

僕はPythonに関しては初心者ですので、まずは初心者向けの書籍を一冊購入して進めることにしました。

初めに判明する想定外

『1日でプログラミングに強くなる』は3冊の中で何となく*1選びました。

家で開封して裏表紙のSummaryにこんなことが書いてあります。

本書は、まったくプログラミングの経験がない方、これから仕事でプログラミングをされる方に向けて執筆しました。

。。。

もしかしたら、簡単すぎるのではないかという不安に駆られました。

実際にやってみて

プログラミング経験者であっても、初めの一冊としては結構いいのではないかと思いました。その理由としては、

  • 書籍の分量が少ない
    • 270ページ、小さくて軽い
  • 章末の練習問題がほどよい難易度
    • 本を見ながら解ける
  • オブジェクト指向、Webアプリケーション開発の入り口を学べる
    • 概念を紹介することは入門書において重要だと思います。
  • 8時間程度で終わった=タイトルに偽りなし
    • 環境構築は終わっていたのでスキップ
    • 練習問題は全部解いた

ちょちょっとプログラム書いてスクレイピングできるぞ~ってなるのは楽しくていいですね。

ただ、この本を終えてすぐに、上記ブログ記事にあるような、天気予報サイトのスクレイピングや、Excelでやっていた分析をPythonにおきかえ、といったプログラムを作るのはやや難しいかなと思います。

次はPyQにチャレンジします。

*1:ブログ内で紹介されていた他の2冊でもよかったはずなのに本当に覚えていない