STUDiO405

趣味のスノーボードやSK8、キャンプ、山登り、iOSアプリ開発関連のブログになる予定

2021年の目標

コロナの状況は変わらず、今年も在宅勤務が継続になりそうです。

ここ数年は正月に太って体重自己記録更新していました。
昨年は在宅勤務が春ごろから始まり、だいたい月に7日前後しか出勤しないので、
体重が落ちる要素がありません。
夏前までは勤務前に軽い筋トレと有酸素運動していたのですが、
猛暑とその後の仕事で残業が増え運動不足になりました...(゚д゚)マズー
 
なので今年は72kg前後の体重を減らすのを主な目的にしたいと思います。
(ダイエットについてはずっと言っていますが今年も変わらずってことです(;・∀・))
 
もう結構なおじさんになっているので、運動だけでは減らせません。
食事の量を減らし、毎日運動して減量したいと思います。
(運動はウォーキング/ジョギング、スクワット、プランクなどを)
目標値は最低でも67kg。できれば62kgにします。
また、これに関連してFlutterでアプリ作ろうかと。
(食事関連じゃないですけどね)
 
他の趣味の話としては、以下を目標にします。
ギターは昨年も結局数回しか弾いていないので、もっと弾く時間を作りたいと思います。(毎年言ってる...)
そろそろキャンプや釣り、山歩きも再開したいですね。1回ずつくらいはやりたいです。
スノーボードの方は、滑りたいんですけどいくのが億劫になりつつあり...
行けば楽しいのは分かっているんですけどね。
近所で手軽にできるSK8の方に気持ちがいってしまっています。
こちらは年末に弾ける回数が増えたので、今年は低くても綺麗なオーリーができると良いなと思います。
 
個人開発についてはリリース済みのiOSアプリの3本がObjective-Cなので、
これをSwiftにコンバートをして、1本をSwiftUIで作成し直しを予定しています。
もちろん機能改善もやりますよ!
 
Swift化対象

Gcamera - Multi Grid Finder -

Gcamera - Multi Grid Finder -

  • STUDiO405
  • 写真/ビデオ
  • ¥120
Remaining

Remaining

  • STUDiO405
  • 仕事効率化
  • ¥250
SnowTracks

SnowTracks

  • STUDiO405
  • スポーツ
  • ¥120
 
SwiftUI化 + Android版作成(Flutter)
帰りますよ?

帰りますよ?

  • STUDiO405
  • ユーティリティ
  • 無料
 
新作(Flutter) x1
新作は作成過程をブログに書いていってみようかなぁ...
(やるとは言っていない)
 
 
では、引き続き今年もよろしくお願いします。

2020年の目標...

今年に入ってすでに1ヶ月経過しているわけですが、一応今年の目標を書いてみようかと。
とはいえ、去年の目標を見たのですが何も達成していないという...

基本、今年も去年と同じです。
去年できなかったのに今年はできるのか?と問われると...(;・∀・)

SNS(特にTwitter)をROMってる時間が結構あるのと飲みに行きすぎなのでまずはそこを減らさないと。
平日は仕事次第で帰宅後の時間がかなり変わるので、そこは筋トレと有酸素運動に時間として身体のケアを中心にします。
年始にまた最高体重を記録してしまったので(;・∀・)

週末はSK8とアプリ開発とギターを中心に。
ブログは...書く気になったらにしますw

去年よりは頑張らねば。。。

では今年もよろしくお願いします(遅

アプリの設計の勉強と実装経験の悩み

 
ここ数年、初めて作ったiOSアプリのGcameraのSwift移行とフルリニューアルを考えていたのですが、フルスクラッチと言うものは面倒くさがりの自分にとっては腰が重く、着手すらしていませんでした。

Gcamera - Multi Grid Finder -

Gcamera - Multi Grid Finder -

  • STUDiO405
  • 写真/ビデオ
  • ¥120

 
今年の目標でもGcameraのフルスクラッチを目標に挙げています。
オブジェクト指向を分かっていない状態で作り、かつ建て増ししているような感じでバージョンアップしていのでソースは肥大化しており密結合の状態です。
 
せっかく作り直すのだから設計もちゃんとしようと、Qiitaや「iOSアプリ開発デザインパターン入門」などで、MVCだけではなくMVPやMVVMなどと言った設計パターンを勉強していました。
理解力が低いので、いまいち理解しきれていませんが...orz
 
概念はわかる(ような気がしている)のですが、いざ実装を考えるとどう書くのだろう?実装サンプルを見てもなんでこんな書き方なのだろうか?となります。
せっかく購入した「iOSアプリ設計パターン入門」も読もう読もうと思いつつ、昨日少しさわりを読んだだけです。
これらの本を読み込んだり、Qiitaなどで勉強して今より理解してから着手しようかとも思いましたが、だいぶ先になってしまう気がしています。
 
では設計パターン本やQiitaなどで勉強しつつ、動くもの完成してからリファクタリングすれば良いのでは?とも思いましたが、出来たものを作り直すのはモチベーション的に上げにくいです。
過去にもクラス分割したりしているので、全く湧かないことはないのですが。
Swiftの実装も1本だけであまり手を動かしていないので実装経験ももっと積まないとと思っています。
 
さて、どうしたものか...
最近コードを殆ど書いてないですし、Swiftの書き方もっと覚えるよう実装経験と優先にした方がいいような...
よし、そうしよう。設計パターン勉強しつつ実装優先で。
フルスクラッチだから機能を少しずつ作って、リファクタリングしていけば良いことにしました。


iOSアプリ開発デザインパターン入門 (技術書典シリーズ(NextPublishing))

iOSアプリ開発デザインパターン入門 (技術書典シリーズ(NextPublishing))

peaks.cc

2019年の目標

健康

  • 体重60〜62kgまで落とす
  • 酒量減らす

アプリ開発

  • Firebaseを利用した新規アプリリリース
  • Gcameraフルリニューアル
  • RemainingをSwiftにコンバート
  • iOSアプリ開発での知見や悩んだことをブログへ書く

ギター

  • 弾ける曲を12曲増やす

スケートボード

  • SK8でオーリーいつでもできるようになる

仕事

  • 転職

釣り

  • ルアーで魚釣る


現場からは以上です。

iOSアプリ 1日だけ(多分)のクリスマスセールします。

この機会に是非。無料にしますぉ!

※価格が変わるタイミングにご注意ください。(ぺこり

Remaining

Remaining

  • STUDiO405
  • 仕事効率化
  • ¥120
Gcamera - Multi Grid Finder -

Gcamera - Multi Grid Finder -

  • STUDiO405
  • 写真/ビデオ
  • ¥120

(´-`).oO(クリスマスセールだから24日がセール日でいいんだよね?

UIApplicationOpenSettingsURLStringが使えない?

 
現在、Objective-Cで書かれている自作アプリをSwiftに移植しています。
その中でアプリ内で設定アプリ内の自アプリ用の設定画面へ遷移するメソッドを移植して稼動確認すると以下のメッセージが表示されて開きません。
 

canOpenURL: failed for URL: "UIApplicationOpenSettingsURLString:" - error: "This app is not allowed to query for scheme uiapplicationopensettingsurlstring"

 
環境
Xcode 8.3.3
Swift 3.1
macOS Sierra 10.12.6
iOS 10.0、10.3.1
 
該当のコードは以下

    func showPermission() -> Void {
        guard let settingsUrl = URL(string: "UIApplicationOpenSettingsURLString:") else {
            return
        }
        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, options: ["":""], completionHandler: nil)
        }
    }

 
ちなみにUIApplicationクラスで定義されている定数です。調べたわかったのですが、値は"app-settings:"です。
 
Appleのリファレンス
https://developer.apple.com/documentation/uikit/uiapplicationopensettingsurlstring
 
移植中のアプリはDevelopment Targetを10.0にしてAPIもiSO10以降のものに変更してしまったのでこのアプリではiO9以前で検証はできないため、Objective-Cで書かれている別アプリで確認してみました。
 
Objective-Cのコード

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];

 
結果は動きました。。。はて???
ググってみてもSwift3でUIApplicationOpenSettingsURLString動いているっぽい。。。謎。
iOS10.2.1での記事もあったので10.0でも動かないのはよくわからない・・・
で、調査の途中で定数の値を知ったのでそっちに変えたところ、あっさり動きました。。。
一応コード載せておきます。

    func showPermission() -> Void {
        guard let settingsUrl = URL(string: "app-settings:") else {  // 引数を変更
            return
        }
        if UIApplication.shared.canOpenURL(settingsUrl) {
            UIApplication.shared.open(settingsUrl, options: ["":""], completionHandler: nil)
        }
    }

 
自分の環境はUIApplicationOpenSettingsURLStringの定数がなくなった?
何が原因なんでしょか?
エラーメッセージだと「このアプリは"UIApplicationOpenSettingsURLString"のURLスキームが許可されていない」と言ってます。
Info.plistの別件で登録済みのLSApplicationQueriesSchemesにこの定数を登録して再度実行してもエラーのままでした。
取り敢えず上記のコードで行くことにしました。
 
何だろうなぁ。気持ちが悪い。同じこと言ってる人いないし。
教えてエロい人!!
 
 
追記
SNSでお友達が指摘してくれました。
定数なのに""で括ってたからでした!
何と!初歩的ミス!!!
 
 
(´・ω・`).;:…(´・ω...:.;::..(´・;::: .:.;: サラサラ..
 

関数の引数に関数を渡す時の構文について

Swift勉強中によく分からなかったので調べてみました。

写経して分からなかったのは以下のサイトに記載の例文。
Swift実践入門 〜 今からはじめるiOSアプリ開発! 基本文法を押さえて、簡単な電卓を作ってみよう - エンジニアHub|若手Webエンジニアのキャリアを考える!

func numbersMap(list: [Int], condition: (Int) -> Int) -> [Int] {
var numbers: [Int] = []
for item in list {
numbers.append( condition(item) )
}
return numbers
}

var items: [Int] = [1, 2, 3, 4, 5]
numbersMap(list: items, condition: { (number: Int) -> Int in number * 2 })

これの引数conditionの { (number: Int) -> Int in number * 2 }の中のin句以降。
ググっても分からず、手持ちの詳解Swiftを調べてみた。

詳解 Swift 改訂版

詳解 Swift 改訂版

こちらは古いので以下のものが最新版です。

関数のとこ見ても書いてない。。。
でもなんか見たことあるなぁと思い、目次を見てたらクロージャって単語が。
これかも?と見たら( ゚д゚)ビンゴーでした。

inの後は実行文とのこと。
Objective-Cの頃からクロージャが理解できず苦手だったので全く見当もつかなかったです(´・ω・`)

上記の例文だと
{ (引数名 : 型) -> 戻り値の型 in 実行文 }
ということになります。
今回の例文だと引数numberの値を2倍にするという無名関数ということになります。*1
 
はースッキリ。
しかし前回勉強してから数ヶ月とかざらにあるのでなかなか覚えられない。
そろそろSwift覚えなきゃと思いつつ他の趣味とか仕事が忙しかったりで進んでないのはもうダメでしょ。
ということで自作アプリをSwiftで書き換える作業をしながら覚えることにしました。
もう手を動かして苦労しないと覚えられん。。。
 
 
本題はここまで。
以下、告知とか雑文です。
 
GW中に自作アプリのアップデート版のメインの実装を終え、週末にちょっとずつ改善を進めていったアプリがリリースされました!

Remaining

Remaining

  • STUDiO405
  • 仕事効率化
  • ¥120
今回の目玉は月単位でしかやりたいことの進捗を管理できなかったんですが、日/週/月/任意の間隔/指定期日までのパターンで管理できるようになりました!!
ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
 
 
話はまた変わって先日、自分がギターを始めるきっかけとなったBOØWYのライブアルバムが発売され早速ゲットしました。
当時はVHSで見てたんですが、布袋氏のカッコ良いステージングを見てこれはやるしかない!!とギターを買い、バンドやってるクラスメイトやそのバンドメンバーに教えてもらったりしてな思い出が。
懐かしいなぁ。。。
でも今では弾く回数激減なので腕は上がってません。
人前ではまだ弾くのが恥ずかしいです(;・∀・)

"GIGS" CASE OF BOφWY -THE ORIGINAL-(完全限定盤)(4CD+Tシャツ+ステッカー)

*1:追記 上記のサイトの次のとこに書いてありました...よく読んでからブログ書けよ>俺 まぁ備忘録だからいいよねw