hiragram no blog

iOSとか

Swift

Vapor + Vapor Cloudでクローラー的バッチ処理

この記事はVASILY Advent Calendar 2017の17日目の記事です。 また、以下の記事の続きです。 hiragram.hatenablog.jp アプリにJSONを返す部分を安全にする話を前回したので、今度は取引所のAPIを叩いてデータを取得するバッチを紹介する。 データ集めのバッ…

安全サーバーサイドSwift

この記事はVASILY Advent Calendar 2017の9日目の記事です。 目指すのは労働からの引退。 VASILY開発合宿で取り組んだ内容です。 何を作りたいのか ビットコインの売買価格は取引所によって異なる。そこで、安い取引所で買って、すぐに高い取引所で売ること…

iOSアプリのバックエンドにFirebase使ってみた感想

習作としてレシピのマスターデータがあってそれを作ったよというレポートをアプリから投稿できるようなやつを作ってみて感じたこと。 とりあえず動かすのが超簡単 コンソールからプロジェクトつくってキー発行してSDK入れて初期化すればDBにアクセスできて簡…

Segueを使わずにかっこよく画面遷移する方法を考えた

最近Segueをいかに安全に使って画面遷移するかということを考えていたけど、#swtwsを見ていてそもそもSegueを使わない/嫌いという人が結構いるんだなと思ったのでSegueを使わないで楽に安全に画面遷移する方法を考えてみたら意外といい感じになった。 Segue…

アクセス修飾子周りでSwiftのバグっぽいのみつけた

Swiftのバージョンは3.0 ViewController.swift import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print(TypeA.name) } } ProtocolA.swift import Foundation private protocol ProtocolA { } exte…

ビルドターゲットがフレームワークの時にCommonCryptoをimportしたい

この記事はSwift Advent Calendar 2016の2日目です。 TL;DR 結局イケてる解決はできませんでした 前提 UIにかかわらない部分を切り離すため、Embedded Frameworkの仕組みを用いてモデル層を別モジュールにした API通信時にSHA256でトークンを作ってるところ…

"ReactiveCocoa vs RxSwift"の和訳

https://www.raywenderlich.com/126522/reactivecocoa-vs-rxswift - Functional Reactive ProgrammingはSwift開発者の間でますます人気が高まってきている方法論である。それは複雑な非同期処理のコードを書きやすく、理解しやすくすることができる。 この記…

Enums as configurationは別にアンチパターンでは無いのでは

ちょっと前の記事だけど。 Enums as configuration: the anti-pattern via @jesse_squires この記事が言いたいのは enumでインスタンスの設定をするのは、提供された選択肢から選ぶしか無いので利用者側の自由度が低く良くない。 ライブラリやフレームワーク…

Swift3の新しいアクセス修飾子について考察

3行で Swift3から新たなアクセス修飾子 open,fileprivateが追加された privateの扱いが変わった ゆるい順に、open,public,internal,fileprivate,private open 「モジュール外からアクセスでき、 サブクラス化(継承)可能である」ことを示すアクセス修飾子。以…

複数のプロトコルに適合する型、という書き方

最近知りました。 //: Playground - noun: a place where people can play protocol Animal { func run() } protocol Vehicle { func drive() } struct Nekobasu: Animal, Vehicle { func run() { } func drive() { } } let bus: protocol<Animal, Vehicle> bus = Nekobasu() </animal,>…

xibからビューのインスタンスを生成するコードの治安を良くする

AwesomeView.xibからAwesomeViewのインスタンスを作りたい時、普通にUINibのイニシャライザを使って呼び出すと let awesome = UINib(nibName: "AwesomeView", bundle: nil).instantiateWithOwner(nil, options: nil).first as! AwesomeView こんなに治安が悪…

NSTextFieldをAutoLayoutで配置すると幅が0になっちゃう

最近趣味プログラミングでAppKitを触っている。 AppKitについて言いたいことはいろいろあるがUILabel代わりに使ったNSTextFieldについてハマったので書いておく。 Slackのメッセージみたいな見た目のビューを作りたくてAutoLayoutでごちゃごちゃ配置してたら…

awakeFromNibのドキュメント読んだ

awakeFromNib https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSObject_UIKitAdditions/#//apple_ref/occ/instm/NSObject/awakeFromNib ちゃんと理解してる自信がなかったので読んでみた。 Prepares the receiver for service afte…

しょぼいライブラリを公開したあとの話

興味を持ってもらえるのは嬉しいという話。 まえがき しょぼいライブラリを公開した話 -> 3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった YHImageViewer作った CocoaPodsにも公開した モチベーションが上がった その後 達成感の熱を持ったまま私は…

3連休で初めてOSS活動に足突っ込んでみたらクソ簡単だった

飛ばしっぽいタイトルですまんの やってることは全く大したことないけど、思ってたより100倍くらい簡単にできたので書きます。 How to系の話はもう他にいくらでもあるので以下の内容は書いてません。 SwiftでiOSライブラリを作る方法 CocoaPodsに公開する方…