Counter with useReducer+Flux 的な何か

後で振り返るように。 action&state interface Action<ActionType> { type: ActionType; payload?: any; } enum CounterActionType { Increase, Decrease } interface CounterState { count: number; } type CounterAction = Action<CounterActionType>; function reducer(state: CounterSta</counteractiontype></actiontype>…

Swift URLからパラメーターを取り出す

ディープリンク対応する際にこちらのリポジトリを参考に実装しました。 urlのパラメーター(具体的にはuser?id=0 user/:id的なやつ)はpathParameterとqueryParameterと呼ばれているらしいです。 使用例 URLの文字列をpattern文字列を指定してパースします。 …

ContainerViewController / Custom TabBarControllerを作る

TabBarをカスタマイズしたい 標準のUITabBarControllerだと、痒いところをカスタマイズするのが大変です。 TabBarをUIViewのサブクラスとして自作することで、自由にUIやアニメーションの実装ができるようになると思います。 UITabBarController - UIKit | A…

Swift Logger

Literal Expressionを使って情報を付け足し出力する。 struct Logger { static func debug(_ item: Any, file: String = #file, line: Int = #line, function: String = #function) { #if DEBUG let components = [ "Debug \(Date())", "file: \(file)", "li…

DI Containerをサクッと実装してみる

AngularJSのInjectorのソースを読んでから一回DIライブラリを作って見たくなったので、何も考えずSwiftで実装してみる この方法が良い悪いの話は置いておいて、Angularのようなインターフェースを目指す。 class ApiClient {} class QiitaRepository { let c…

Swift Type Eraser is 何?

ググると出てくるやつ 多分 try! Swift 2016で発表があってそれのまとめ記事がよく出てくる。 protocol Pokemon { associatedtype Element var element: Element { get } } associatedtype を持つProtocolで変数を宣言するとエラーになる。 let pokemon: Pok…

カレンダーを実装してみた

moment.jsに少々手こずったが1日はかからないくらいで実装できた。 iOSだともう少し時間がかかってしまう。 ググった感じ組み方はtableタグにheader2つのやり方と、divで囲んでulで並べる感じのが多かった。 table使ったことなかったのと、多分それで組ん…

ChromeのColorPickerを実装した

TODO: gif, refactor, github // https://gist.github.com/mjackson/5311256 class Picker { constructor() { this.view = { canvas: document.getElementById('canvas'), colorPanel: document.getElementById('colorPanel'), dummyPalette: document.getEl…

RxJSを使ってincremental searchする

<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>RxJS Demo</title> <style> body { font-family: 'Arial'; background: white; text-align: center;} #container…</meta></meta></meta></head></html>

Swiftでタグを入力するUIを作ったやつ

タグを入力するViewを作った 以前に下のようなタグを入力する画面を作成したのですが、これもアウトプットしないと勿体ない系だと思ったので簡単にまとめます。 類似するUIを持つ具体的なアプリがすぐには思いつかないのですが、日記アプリやメモアプリなど…

SwiftでTooltipを書く

SwiftでTooltipを書いた こうゆうツールチップを書きました。 こんな感じに書けます。 本当はもう少し描画周りのリファクタしたりカスタマズ性を持たせたりしたいが、そもそも自分が使わないのでこの辺でアウトプットします。 private let toolTip = Tooltip…

nodebrewのメモ

brew install nodebrew nodebrew -v churabou@churabou ~> nodebrew install v8.9.4 Fetching: https://nodejs.org/dist/v8.9.4/node-v8.9.4-darwin-x64.tar.gz Warning: Failed to create the file Warning: /Users/churabou/.nodebrew/src/v8.9.4/node-v8.…

簡単なGridLayoutを実装するためのLayoutクラス

はじめに iOS開発をはじめて2年が経ち自分なりにUIKitでいろんなUIを作ってきました。そろそろアウトプットとしてgoogle検索で上位でてくる古い情報を上書きしようとと思っていた矢先、SwiftUIがでてきてしまい一気にモチベーションが下がってしまいました。…

CoreAnimationのサンプル

雑にまとめます。 用語が一部正しくない場合がございます。 Pathに沿ってアニメーション CAKeyframeAnimationにpositionで指定して、pathを指定してあげると パスに沿ってアニメーションします。 let anim = CAKeyframeAnimation(keyPath: "position") anim.…

Xcodeのショートカットを覚える

トラックパッドを封印する際に必要なショートカット。 単語移動 Ctr + n Move Down TD Ctr + p Move Up TD Ctr + b Move Backward TD Ctr + f Move Forward TD Ctr + a Move To Beginning of Paragraph TD Ctr + e Move To End of Paragraph TD b n p f はma…

ReactiveSwift Signal.Observerにbind出来るようになった🎉

SwiftでMVVMのViewModelを作るとき、Viewからの入力に関していえばViewModelでObservableを保持しそれをObserverとして公開するのが一般的だと思います。 final class ViewModel { private let tapLoginSubject = PublishSubject<Void>() var tapLogin: AnyObserver<Void></void></void>…

ReactiveSwiftを触ってみる

textField.rx.text .bind(to: label.rx.text) .disposed(by: bag) textField.rx.text.asDriver() .drive(label.rx.text) .disposed(by: bag) label.reactive.text <~ textField.reactive.continuousTextValues map: do { let (signal, observer) = Signal<String, NoError>.pi</string,>…

RxTestを使ってみる

さっと動かしてみる func test_observer() { // ①TestSchedulerを生成する (仮想時刻を0で初期化) let scheduler = TestScheduler(initialClock: 0) // ②TestObserverを生成する let observer = scheduler.createObserver(Int.self) // ③イベントを流す sche…

関数でも解放されない。

タイトル適当ですが、手元で動かしたものをサクッと出力。 androidのxmlとかvueやanglureのように、swiftでも宣言的にUIを定義してみようと、少しいじってみた。 こんな感じのボタンクラスがあるとして import UIKit final class Button: UIButton { conveni…

Swift structのクロージャーが変数をキャプチャする

初めてクロージャーを見たときこそ関数とどう違うのかわからなかったが、 普段の開発では特に気にせず普通に使っていた。 RxSwiftのObserverクラスを見てみると少し不安になってきた。 struct Observer { var eventHandler: () -> () init(_ eventHandler: @…

ListVIewにitemを表示する

Android開発に入門しました。今回はListViewを使ってみました。 ListViewを追加します。 制約を適当につけidをつけます。今回はItemListViewにしました。 実際のコード ・MainActivity class MainActivity : AppCompatActivity() { override fun onCreate(sa…

UILabelのフォントサイズを2倍にするとき、必要なboundsも2倍になるのか

ただのメモです。 結論から言うとぴったし2倍にはならないがだいたい二倍になる。 let label = UILabel() label.textColor = .white label.backgroundColor = .red label.text = "test test test" label.center = view.center label.font = .boldSystemFont(…

【Swift】PhotoShopのacvファイルを使って画像にフィルターをかける

iOSには画像系のライブラリで有名なCPUImageあり、これを使えば.acvファイルを使用した画像フィルターが簡単に利用できます。 しかしこの機能を外部のライブラリに頼りたくないので自分で実装してみようと思います。 完成品 トーンカーブを使うには トーンカ…

画像エディターのテキスト入力時のラベルについて

引っ張ると回転しながらサイズも変えられるラベル。よくあるらしい。 初めて見たときは、これどうやって実装するんだ??と思ったけど、ラベルの中心が変わらないことに気づけば 適当に実装しても似た感じのができた。 デモ ViewDidLoadに下記を貼ると let l…

小さな会社でのインターンの記録

もしかしたら悪い印象を与えるかもしれませんが、自分の思っていることを素直に書きました。一部上から目線ですいません。 1社目 株式会社L メンバー5人 早稲田の院生の先輩と同時にスタートしたが、5ヶ月後に受け入れ終了された。 当時はインターン落ちまく…

RxSwiftを2週間ほど触ってみて。

RxSwiftは学習コストが高いと言われている。 しかし2018年となった今は情報量が非常に多く日本語の記事もたくさんある。 すなわち学習難易度は低いのではないかと思う。 以下自分が2週間くらい手探りでわちゃわちゃやった結果、こんな感じで学んでいけばいい…

RxSwift+MVVMのお勉強?数字を暗記するゲーム

github.com ちゃんとMVVMになっていると思うのだがどうだろうか Inputs: UIEvent(ボタンのタップ、ViewDidLoad) outputs: Viewがタップできるか、解答中の数字文字列、問題の数字等 ViewModelのデータの変更をViewが反映できている。 ViewModelは問題のデー…

画像エディターのぼかし処理について

ぼかし処理 func boxBluredImage(radius: CGFloat) -> UIImage { let inputImage = CIImage(cgImage: self.cgImage!) let affineClampFilter = CIFilter(name: "CIAffineClamp")! affineClampFilter.setValue(inputImage, forKey: "inputImage") affineClamp…

コードレイアウトで肥大化したViewのファイルを圧縮する

現在とあるアプリの受託開発をしております。 Objc -> Swiftの移行と共にプロジェクトからIBを無くしたいとのことです。 そこでstoryboardにあるものをコード化しているのですが、作成するViewのファイルがどうしても肥大化してしまいます。 ある程度はしょ…

それでも大学を続けます

高校生の時から大学は遊ぶところ、やりたいことが見つからない人が行くところだと思っていた。大半の人はそうだと思う。 大学1年の秋は毎日授業があるせいでインターンの時間を確保できなかった。休学して自分でサービス作りたい!フルコミで開発して本気で…