Swift

Swiftに関するページ
技術書典6で同人誌を配布するまで考えたこと全て
技術書

技術書典6で同人誌を配布するまで考えたこと全て

2019/04/14 (日) 技術書オンリーイベント技術書典6 [https://techbookfest.org/event/tbf06]が開催されました。 私は新作「ハーフモーダルで理解するFluid Interface [https://techbookfest.org/event/tbf06/circle/48210003]」を配布しました。 イベント開催時間の11:00から17:00まで、ひっきりなしに人がブースに遊びにきていただき大いに盛り上がりました。お陰様で販売数も170冊以上 (製本+PDF合わせて)配布することができました。 ご購入頂いた方、ブースをのぞいてくれた方ありがとうございます。 この記事では新作を作り、読者に届けるまでの過程を振り返りたいと思います。 > 本日ご購入いただいた方、見本誌お読みいただいた方ありがとうございました!たくさんの方に興味を持ってもらい書ききった甲斐がありました。(〆切前に泣きながら書いてました。。) #技術書典 [https://twitter.com/hashtag/%E6%8A%80%E8%A1%93%
12 min read
【iOS】画像を指で回転する方法
iOS

【iOS】画像を指で回転する方法

こんにちは、タケシです。 この記事ではiOSアプリにて「画像を指で回転する方法」について解説します。 現実世界ではモノを回して何かを操作することはよくあります。 福引の抽選器、DJのターンテーブル、昔ながらの黒電話などなど。 現実世界で対象をまわすもの:福引抽選器、DJのターンテーブル、昔ながらの黒電話それらを模倣したUIの実装をする場合、この記事が役に立つでしょう。 途中で三角関数など数学的な知識が必要になる場面がありますが、なるべく分かりやすく解説します。 もちろん「やり方だけ知りたい!」という方もOKです。 では始めます。 目次 1. 開発環境 2. サンプルアプリ 3. 下準備 4. タップ座標から角度を調べる 5. 「解説」度数とラジアン 6. 「解説」三角関数 7. 移動角度を調べる 8. 角度からViewを回転させる 9. transformから角度を調べる 10. 終わりに 開発環境 解説は下記の環境で行います。 * Xcode10.1 * Swift4.2 サンプルアプリ
9 min read
Bonfire iOS #4に行ってきた
イベントレポート

Bonfire iOS #4に行ってきた

本日はYahoo!Japan社が開催するiOS勉強会Bonfire iOSに行ってきました。 Bonfire iOS #4 [https://yj-meetup.connpass.com/event/86651/] 今回のテーマはUIです! > 第4回のテーマは「UI」です! UI、それはアプリ開発と切っても切り離せない関係…… どうやって保守しやすくUIを定義していくか どうやってユーザビリティの高いUIを作っていくか どうやって多人数で協力してUIを作っていくか どうやってツール(Auto Layout, Storyboard, …)と向き合っていくか どうやって非同期処理と連携していくか どうやって新しい分野(AR, VR, …)でのUIを作っていくか などなど、それらのどれもが昔から、そして現代においても重要なテーマです。 今回はUIという大きな課題に対して、各々どう向き合っているのかを話のネタに交流し、気づきを得られる夜にできればと思っています。 健康なStoryboardを考える 〜 Auto Layout、UIStackViewともっと仲良く! 最初はゆこ
8 min read
iOS

iOS11 Core NFCを使ってみた

iOS11になって、Core NFCというフレームワークが追加されました。 これはNFC(近距離無線通信)を利用したタグとの通信が出来るフレームワークです。 現状では読み取り専用で、しかも専用のアプリを起動しなければいけないそうです。 Androidアプリでは「NFCタグを端末に近づけるとアプリを起動する」といったことができますが、iPhoneではまだそのようなバックグラウンドからNFCの検知イベントでアプリを立ち上げるなどはできません。 ですが、長年さまざまな人が待望した機能ではあります。 実験する価値はあると思っています。 今回はCore NFCを使ったサンプルのアプリの紹介です。 コード量はすくないですが、ハマリポイントもあったので皆さんのお役に立てればと思います。 動作環境 * Xcode9.2 * iPhoneX iOS 11.1.2 NFCタグをゲットする Core NFCを利用したいなら兎にも角にも最初はNFCタグをどこからか入手しなければ行けません。 幸いAmazonで10枚入りのモノが売っていたのでそちらを購入します。 サンワサプライ NFCタグ(10
4 min read
Swift

Playground でURLSessionを試す(GET編)

iOSの標準ライブラリーだけで通信処理をすることになったのでこの基にURLSessionの使い方をみてみる 環境 * Xcode8 bata4 * Swift3 * Playground サーバーはWebAPIをとりあえず試せるサイトhttp://httpbin.org/を使用します GETで実行 //: Playground - noun: a place where people can play import UIKit import PlaygroundSupport //Construct url object via string var url = NSURL(string: "http://httpbin.org/get") let config = URLSessionConfiguration.default let session = URLSession(configuration: config) var req
1 min read
Swift

[Swift]クロージャーの使い方

Swiftの文法で特に分かりづらいものの1つクロージャーの使い方を見ていきます。 環境 今回の記事は以下の環境で実行することを想定している記事です。 * Swift2.2 * Xcode7.3.1 -------------------------------------------------------------------------------- クロージャー クロージャーは自分を囲むスコープにある変数を参照する関数のことをいいます。(変数をキャプチャするといいます。) Swiftは第一級関数をもつ言語で、関数そのものを型に指定できたり、関数をインスタンス化できます。 関数をインスタンス化したら、それはクロージャーになると考えて大丈夫です。 関数に名前がない無名関数としても定義することができます。 【なぜクロージャ(Closure)と言うのか?】 http://qiita.com/mochizukikotaro/items/7403835a0dbb00ea71ae 各言語、クロージャーの概念はなかなかとっつきにくいものがあります。上記のqiitaの記事は言語
7 min read
iOS

[Xcode]PlaygroundのコメントでMarkdownで書こう!

Swiftを手軽に実行できる環境を提供するPlaygroundですが、コメントをMarkdownでかけることはご存知でしたか? 今回の記事ではPlaygroundでMarkdownを書く方法をご紹介しようと思います。 -------------------------------------------------------------------------------- 環境 * Swift2.2 * Xcode7.3.1 -------------------------------------------------------------------------------- Markdownを書く方法 PlaygroundのコメントでMarkdownを使うには、専用のコメントを書きます。 複数行では**/*: 〜 */を、1つの行では//:**を前につけます。 そしてXcodeのメニューからEditor > Show Raw Markupを選択します。 するとコメントがMarkdownで表示されます。 ---------------
2 min read
iOSカンファレンス! iOSDCに参加したよ!
iOS

iOSカンファレンス! iOSDCに参加したよ!

2016年8月20日、iOSカンファレンスのiOSDC (iOS Developers Conference Japan)が開催されました。 https://iosdc.jp/2016/ とても熱気あふれるカンファレンスでした。 参加してよかった! 登壇内容もどれも実践的で、それぞれの登壇者の経験をもとに語られて、参考になるものばかりでした。 この熱気が冷めないうちに、iOSDCの登壇内容を記事にしたいと思います。 私が参加した登壇を書いていきたいと思います。 -------------------------------------------------------------------------------- 海外のiOSカンファレンスに登壇する - 完全版 by shu223 shu223 [https://twitter.com/shu223]さんのiOSカンファレンスの登壇に挑戦した内容です。 > 堤さんの発表始まった!#iosdc [https://twitter.com/hashtag/iosdc?src=hash] — SatoTakeshi_カエ
7 min read
Swift

第2回RxSwift勉強会 @ Sansan参加レポート

2016年8月19日、第2回RxSwift勉強会 @ Sansanに参加してきました。 そのレポートをします。 -------------------------------------------------------------------------------- @kazu0620 [https://twitter.com/kazu0620?lang=ja]さんの発表。 資料もすぐに上がっていた。 https://speakerdeck.com/kazu0620/rxexamplekaraxue-bu-rxswift 勉強になった点を網羅していきます。 bindToについて ストリームの要素が流れてくるのを購読して、その要素を対象に紐付ける。Nextイベントのみに反応して、ErrorイベントとCompletedイベントでは反応しないものだそうです。 Observableを他のObservableと紐付けるものだと理解していたのですが、Subscribeを簡単にするものという認識がなかったので、理解が深まりました。 ShareReplayとHot変換 Obse
2 min read
Tokyo Server-Side Swift Meetup #3に参加してきました
Swift

Tokyo Server-Side Swift Meetup #3に参加してきました

昨日は株式会社Oneteamさんで行われたTokyo Server-Side Swift Meetup #3 [http://tokyo-ss-swift.connpass.com/event/30823/]に参加してきました。 登壇者は白ヤギコーポレーションのYusuke Itoさん、SwiftのServerSideフレームワーク「Slimane [https://github.com/noppoMan/Slimane]」を作っているnoppomanさん、主催されている会社Oneteamの Atsushi Nagaseさんが登壇しました。 値付きenumをhackする https://github.com/novi/tsssm-enum まずはYusuke Itoさんが発表しました。 Swiftの値付きenumで状態によって様々なデータをいれる方法を見ていきました。 Playgroundを配布してその場で試せるようになってました。こういうやり方いいですね。 ----------------------------------------------------------
1 min read
Swift

RxSwiftを使ったデリゲート実装方法

RxSwiftを勉強中です。 概念から、実際の実装まで、まだまだわからないことだらけです。 わかったことから少しづつ記事にしようと思います。 間違いがありましたら、ツッコミお願いしますm(_ _)m 今回はRxSwiftでViewをタップしたらViewControllerでイベントを検知する方法を見ていきたいと思います。 UIViewの実装 //SampleView.swift class SampleView: UIView { //weak var delegate: SumpleViewDelegate? // ここでは`PublishSubject`を使ってイベントを送信する let rx_message = PublishSubject<String>() private func didSelect() { rx_message.on(.Next("message")) } override func awakeFromNib() { self.userInte
1 min read
Swift

Swiftのジェネリクスの使い方

ジェネリクス 型をパラメーターとして扱う方法。型を抽象化できて便利なコードを書けるようになる。 Swiftの標準ライブラリーの多くがジェネリクスを使っている。 この記事ではジェネリクスを使っていないコードとジェネリクスを使ったコードを比較して、ジェネリクスの有効性から使い方までみていきます。 -------------------------------------------------------------------------------- ジェネリクスを使わないイケてないコード Int型の引数2つを入れ替える関数を作ってみます。 func swapTwoInts(inout a: Int, inout _ b: Int) { let temporaryA = a a = b b = temporaryA } このswapTwoInts(_:_)関数を実行してみます。 var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someI
6 min read
Swift

[Swift]バックグラウンドでも処理を続ける方法

アプリの処理をバックグラウンドにいっても続ける必要があったので、メモをします。 実行環境 * OS X El Capitan‎ * Xcode 7.3 * Swift 2.2 * iPhone 6Plus (iOS9.2) UIBackgroundTaskIdentifierの登録 通常、NSTimerなどの継続して動く処理でもアプリバックグラウンドに移動した瞬間に処理が止まってしまいます。 しかし、UIApplicationの- beginBackgroundTaskWithName:expirationHandler:か- beginBackgroundTaskWithExpirationHandler:を実行するとバックグラウンド状態でも処理を継続することができます。 iOS4から実装されたマルチタスキングの機能なのだそうです。 ViewControllerに一秒ごとに現在時刻をプリントする処理を書いてみます。 import UIKit class ViewController: UIViewController { var timer = NSTi
1 min read
Swift

Swiftの添字付けの使い方

Swiftの添字付けの使い方をみてみます。 添字付けとは? クラス、構造体、列挙型で定義可能な、リスト、コレクション、シークエンスのアクセスを便利にしてくれるショートカットです。 プロパティのアクセスを便利にできます。 もっと簡単にいうと配列の要素をアクセスするときの[]のこと let tmpArray = [1, 2, 3] print(tmpArray[0]) -------------------------------------------------------------------------------- 添字付けの文法 添字付けは以下のように書きます。 subscript(引数) -> 戻り値の型{ get{ 添字で指定したプロパティを返す文 } set (引数) { プロパティの値を更新する文 } } set節の引数はなくてもよいです。その場合はnewValueという引数が使える。 get節は必須でset節は省略可能。set節省略で読み取り専用の添字を作れる。 添字を使ってみる プロパティの数値桁
3 min read