タグ

ブックマーク / qiita.com/mono0926 (27)

  • SwiftのAddress/Thread Sanitizer - Qiita

    Sanitizer という英単語はあまり聞き慣れないですよね。辞書的には以下のような意味です。 sanitizerの意味 - 英和辞典 Weblio辞書 清浄剤、清浄薬、消毒剤、消毒薬、殺菌剤、殺菌薬、サニタイザー Xcode で扱う際の「Address/Thread Sanitizer」の和訳は、「メモリアドレス・スレッドへの不正アクセスの検知機構」といったところでしょうか。 Thread SanitizerはXcode 8で、Address SanitizerはXcode 7で導入された仕組みです。ただ、Address SanitizerはXcode 7時点ではObjective-Cのみの対応で、Swift対応はXcode 8からです。なので、Swiftで扱うという観点だと、どちらもXcode 8からの機能とみなせます。 どちらもプロジェクトのスキーム設定のDiagnosticsタブで

    SwiftのAddress/Thread Sanitizer - Qiita
  • Swift 3 以降の NotificationCenter の正しい使い方 - Qiita

    Swift 3 で NotificationCenter(旧 NSNotificationCenter ) がせっかく改良されたのに、そのメリットが活かされないようなコード例をよく見かけるので、正しい使い方をまとめます。 以下、主にSwift 2時代のコードを3でどうベターに書けるようになったのかという視点メインでの記述となっています。 次の class を用意して、それをもとに説明していきます(struct は自身を登録できないので class で説明)。 class NotificationObserver { func addObserver() { // A: ここに NotificationCenter 通知登録処理を書く } func removeObserver() { // B: ここに NotificationCenter 通知解除処理を書く } /** C: 今回、通知

    Swift 3 以降の NotificationCenter の正しい使い方 - Qiita
  • iOSアプリの国際化対応の勘所とTips集(Swift版) - Qiita

    今まで国際化は気をつけながらやってきたので、ある程度ノウハウはあったと思っていましたが、String Localization · objc.ioを読んだらちらほら知らないこともあったりしたので、これまでのノウハウ + それを参考に最近、今開発中のPlayer!に実際に適用しつつ改善したことについてまとめます。 特に前半は、iOS以外の他のプラットフォームでも共通のことでけっこう有用だと思います。 ちょくちょく参考リンクも貼っているので、この記事 + それらだけ見ればiOSアプリの国際化については網羅出来るくらいの作りにしてますヽ(・ω・`) 「絶対に日語版以外出さない」というアプリ以外は、初めから国際化対応しておくべき 「国際化対応しておく」というのは英語対応をする、という意味では無く、文言をコードに直書きせずに国際化リソースとして分離しておく、という意味です。 開発リソースの余裕が無

    iOSアプリの国際化対応の勘所とTips集(Swift版) - Qiita
  • 良さげなiOSライブラリの見つけ方・管理法 - Qiita

    Advent Calendarに空きがあって完走の危機だったので今年読んだSwift関連の良記事7選 - Qiitaと同じく、良さげなiOSライブラリの見つけ方・管理法を振り返りました。 やはり良い感じのライブラリを把握しておくのは、開発効率向上に大いに貢献するので。 ライブラリの情報源 Trending Swift repositories on GitHub today 定期実行のTODO管理して、週1で見ています。 基的にStarを付けて、既読管理ぽくしてます。 Star付けられると嬉しいですしね。 僕はもうほとんど見てないですが、Trending Objective-C repositories on GitHub todayでObjective-Cのライブラリチェックしても良いかと思います。 メルマガ ライブラリ紹介の項もあるので、全部見てます。 Swift Weekly -

    良さげなiOSライブラリの見つけ方・管理法 - Qiita
  • 今年読んだSwift関連の良記事7選 - Qiita

    Advent Calendarに空きがあって完走の危機だったので、今年読んだSwift周りで良かった記事(資料)7選を一言コメント付きでご紹介します。 せっかくなので、Qiita以外から選びます( ´・‿・`) Swiftオープンソース化の衝撃 - Hatena Developer Blog 今月オープンソースとして公開されたことや、Swift 3についてとてもよくまとまっています。 RxSwift/Rx.playground 記事じゃ無いですが( ´・‿・`) 11月くらいにReactiveX/RxSwiftへの乗り換え(それまではReactKit/SwiftTaskでそれも良かったです)をしたのですが、このPlaygroundがReactive Extensionsの理解にとても役立ちました。 以前C#メインだったときも少しかじってたものの、今いち理解出来ていないところがあったのですが

    今年読んだSwift関連の良記事7選 - Qiita
  • iTunesConnectに2015年11月に施された大きな改善 - Qiita

    一昨日くらいに、iTunesConnectに、What's New in iTunes Connect - WWDC 2015 - Videos - Apple Developer で発表された内容が反映されました。 ログイン周りが変わったことはけっこう気付いたのでは無いかと思います。 Fastlaneは数時間で対応していてさすがだなと思いました。 Release 1.39.0 New Actions and Features · fastlane/fastlane Updated spaceship to work with the new iTunes Connect login architecture iOSアプリ開発者にはメールが来たと思いますが、けっこうスルーしちゃっている方も多そうなのでご紹介します。 原文はWebに無さそうだったので、メール検索するかWWDCのPDF見ると良

    iTunesConnectに2015年11月に施された大きな改善 - Qiita
    clavier
    clavier 2015/11/14
    iTunesConnectに2015年11月に施された大きな改善 - Qiita
  • Swift 2で提唱されているProtocol Oriented ProgrammingをWWDCセッションから学ぶ - Qiita

    最近、Swift 2で提唱されているProtocol Oriented Programmingの理解がちょっと自信なくて、色々記事見つつも今いち掴めた気がしなかったので、原典であろうWWDCでそれを提唱していたセッションを見たところ、かなりすっきりした気がします。 セッション: Protocol-Oriented Programming in Swift - WWDC 2015 - Videos - Apple Developer セッション冒頭は、クラス vs Protocolの話で知りたいこととちょっとズレていたのでそれはスキップしてます。 そのあたりは、Building Better Apps with Value Types in Swift - WWDC 2015 - Videos - Apple Developer の方が手厚そうなので、近々同じような感じで理解深めておきたいと

    Swift 2で提唱されているProtocol Oriented ProgrammingをWWDCセッションから学ぶ - Qiita
  • ローディング時のズルい進捗表示

    今開発中のPlayer!のログイン・登録画面で、こんな進捗表示をしていますが、これ実はフェイクだったりします( ´・‿・`) (Qiitaの画像サイズ制限が厳しくて粗いです。キレイなものは実際にアプリダウンロードしてご覧下さい。) 経緯 元々、この画面はこういう進捗表示では無く、単にインジケーターがクルクルするだけで、進捗状態が分からないものでした。 特にネットワークが悪いところだと、バグって固まってしまったのでは?とユーザーを不安にさせるようで、たまにそういう声を聞くことがありました。 登録フローは大事なところなので、そういうところでこれが原因で離脱してしまうと残念なので、改善が必要でした。 そこで、ネットワーク処理にもたつきつつもちゃんと正常に処理をしているということを示すために、進捗を表示することにしました。 ただ、例えば大きな画像などメディアファイルダウンロードなどならともかく、こ

    ローディング時のズルい進捗表示
  • Swift 2のパターンマッチ構文集(ほぼ翻訳) - Qiita

    Match Me if you can: Swift Pattern Matching in Detail.が良記事で、ちょうど僕もSwift2のキャッチアップ中だったので、写経しながら翻訳ぽい記事を書きました。(翻訳許可もいただいています) 冒頭のイントロ的部分は飛ばして、Advanced Pattern Matchingから書きます。 様々なパターンマッチング 7つのパターンを紹介します。 switchだけではなくif・guard・forを組み合わせて表現します。 1. ワイルドカードパターン ワイルドカードパターンは、マッチした値を無視します。 let _ = fn()の_と同様です。 単に_で受けるとnilを含む全ての値にマッチしてしまうので、オプショナルの値をマッチするには、_?として区別します。 let p: String? = nil switch p { case _?:

    Swift 2のパターンマッチ構文集(ほぼ翻訳) - Qiita
  • iOS 9からAPNsデバイストークンがアプリインストールの度に変わるようになったようです - Qiita

    iOSのAPNSデバイストークンの変更タイミングは不定で、APNsデバイストークンのハンドリング(通知サーバーへのデバイストークン伝達など)は、アプリが起動される度に毎回行うことが推奨されています。 とはいえ、観測・実験ベースで、変更タイミングが大体分かっていて、この記事など参考になります(iOS 8までの挙動)。 iOS7でのAPNSデバイストークンに関する挙動について - ゆれくるコール開発日誌 iOS7でプッシュ通知のデバイストークンに大きな変更 | 三度の飯とエレクトロン iOS 7にアップデートのタイミングで変わるようですが、iOS 8・9へのアップデートのタイミングで変わるかは把握していません。 繰り返しになりますが、下記のように変更タイミングは不定と明記されているので、ロジック自体はそれに頼らずに組むべきです。 Never cache device tokens in you

    iOS 9からAPNsデバイストークンがアプリインストールの度に変わるようになったようです - Qiita
    clavier
    clavier 2015/09/11
    Swift - iOS 9からAPNSデバイストークンがアプリインストールの度に変わるようになったようです - Qiita
  • iOS9 - Xcode 7 GMで、3D Touchによる、アプリホームアイコンからのクイックアクション起動が可能になりました - Qiita

    Xcode 7 GMで、3D Touchによる、アプリホームアイコンからのクイックアクション起動が可能になりましたiOSSwiftiOS9XCode73DTouch 記事は、3D Touchのドキュメント未公開時に、API探しながら書きましたが、その後公開されました。 Adopting 3D Touch on iPhone: 3D Touch APIs これのことですヽ(・ω・`) (http://www.apple.com/jp/iphone-6s/3d-touch/ から拝借) 今朝の発表を見ていたら、お馴染みのやつですヽ(・ω・`) 詳しくは、 iPhone 6s - 3D Touch - Apple(日)のクイックアクションの項など、ご覧下さい。 3D Touch周り、面白そうですね( ´・‿・`) ビデオ観るとよりイメージ湧きます: http://www.apple.com/

    iOS9 - Xcode 7 GMで、3D Touchによる、アプリホームアイコンからのクイックアクション起動が可能になりました - Qiita
  • iOS 9からForce Touch(3D Touch) API解禁(iOS 9.1ではさらにリッチに) - Qiita

    記事は、3D Touchのドキュメント未公開時に、API探しながら書きましたが、その後公開されました。 Adopting 3D Touch on iPhone: 3D Touch APIs Pre Release用のUITouchのドキュメントに、Force Touchについての記載がありました。 (普通のUITouch Class Reference にはない) UIForceTouchCapability - UITraitCollection Class Referenceにもけっこう記載があります。 3D Touch and Trait Collections Starting in iOS 9, you can use this class to check whether the device on which your app is running supports 3D

    iOS 9からForce Touch(3D Touch) API解禁(iOS 9.1ではさらにリッチに) - Qiita
  • iOSアプリのリリース管理術 - Qiita

    主に今年学んだリリース周りの諸々の取り組み方やTipsについてご紹介します。 (体系だった感じでは無いですし、網羅性には欠けると思います) CI環境 fastlane + CircleCIで行っています。 去年まではJenkins使っていました(違う職場ですが)が、Travis CI上でビルド・配布のシェルスクリプトを実行するようになり、現在はfastlaneを使うようになった、という変遷があります。 TravisとCircleCIはiOSアプリビルドに関しては、大差無いですが、CircleCIの方がXcode 6.3対応が早かったので乗り換えました。 しかし、Xcode 7 betaはTravisの方が早くて、うーんという感じです。 fastlane使っていると、CI環境の設定ファイル(ymlファイルなど)がかなり薄くなるので、CI環境乗換簡単ではあるのですが、CircleCIもわりと早

    iOSアプリのリリース管理術 - Qiita
  • AppStore上でのiOSアプリのスクリーンショットのうまい見せ方 - Qiita

    今朝2.0をリリースしたPlayer!の、デザイナーの @riotherio 作成のスクリーンショットがかっこよくてさすがだなと思ったので、ご紹介します。 要は、スクリーンショットの1〜2枚目を使って1つの大きな絵を表現しています。 とくに、iPhoneで見た時に、今のAppStoreでの見せ方にすごくフィットしていて、他のアプリより一際目をひくし、アイディアもデザインもさすがだなと思いました( ´・‿・`) こういう工夫で、ダウンロード数が伸びれば嬉しいですね( ´・‿・`) iPhoneで見た時 Macで見た時

    AppStore上でのiOSアプリのスクリーンショットのうまい見せ方 - Qiita
  • Appleが、WebサイトがSearch APIの要件を満たしているか判別してくれるツールを公開したので試してみた - Qiita

    Appleが、WebサイトがSearch APIの要件を満たしているか判別してくれるツールを公開したので試してみたiOSWebWWDCsearchapiiOS9 AppleがApp Search API Validation Toolを公開しました。 AppleBotのクロール結果を表示してくれます。 Search API周りは、もう大体ドキュメントも揃ってきて、そちらへのリンクなども下部にあるので、便利です( ´・‿・`) 今開発中のPlayer! http://web.playerapp.tokyo/news/279371?tag=24 を入力してみました。 うーんあまり良くない結果ですね(´・︵・`) Smart App Bannerは、もうすぐ対応予定ですが。 Search APIは、クライアントは対応予定ですが、Webはちょっと遅れそう( ´・‿・`) Gunosy https:

    Appleが、WebサイトがSearch APIの要件を満たしているか判別してくれるツールを公開したので試してみた - Qiita
  • チャットなどリアルタイム更新が必要なスマフォアプリの構成について考えてみた - Qiita

    今開発しているPlayer!で、チャット系のリアルタイム更新処理が必要となったので、色々調べています。 ※「スマフォアプリ」として共通事項が多いのでそう表記しましたが、基的にスマフォアプリはiOSアプリとして書いてます。AndroidWindows Phoneなどは差異があったり読み替える必要があると思っています。 結論 後半で詳しく書きますが、今のところ以下の結論に至りました。 PUSH通知に全て依存する構成でもそれなりに動く PUSH通知 + 双方向通信処理(WebSocketなど)の併用がベスト 双方向通信処理はPusher・Firebaseなどのサービスに頼る or ws・Socket.IO・SignalR + 対応クライアントライブラリなどで自前実装 Pusherなど有名サービスのクローンOSS導入も良さそうです stevegraham/slanger edgurgel/po

    チャットなどリアルタイム更新が必要なスマフォアプリの構成について考えてみた - Qiita
  • 他社製iOSアプリの実装の探り方 - Qiita

    普段アプリ使っていて、これどうやって実装しているのだろう?とか思うことありますよね。 そういう時に、僕がちょくちょくやっている方法を紹介します。 ベタな方法 開発者に聞く 当たり前ですが、知り合いに教えてくれそうな人がいたら、聞いてみるのが良いですよね。 記事・スライドを探す 最近は特集記事や勉強会スライドなどでよく設計や実装が紹介されていますよね。 検索に引っかかりにくかったりすることもあるので、普段からよく目を通しておいて、「そういえばあの時のスライドに書いてあった」みたいな感じで思いだして見直したりしてます。 記事例: - LINEのプラットフォームを支えるアーキテクチャと組織の作り方 #linedevday | マイナビニュース スライド例: - Gunosy for Apple Watchができるまで あと、雑誌検索も良いですね。 WEB+DBなどの連載でちょくちょく事例載ってた

    他社製iOSアプリの実装の探り方 - Qiita
  • iOS 9のSearch APIのドキュメントが追加されました - Qiita

    今朝、OSX El Capitan・iOS 9・watchOS 2のβ4のアップデートが来ました。 これまで大体隔週で日時間水曜くらいの朝にアップデート来ている感じです。 (全部更新しちゃいました。watchos 2のバッテリー問題がそろそろ解消されていることを願います(´-ω-`)) 新しいβがリリースされると、こちらのドキュメントが大量に更新されます。 iOS Developer Library そのうちの一部として、Search APIのCore Sportlightのドキュメントが追加されていました。 これで、かなり実装がしやすくなりますね( ´・‿・`) Core Spotlight Framework Reference CSSearchableItemAttributeSet Class Reference CSSearchableItem Class Reference

    iOS 9のSearch APIのドキュメントが追加されました - Qiita
  • iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita

    今開発しているPlayer!で、チャット系のリアルタイム更新処理が必要となったので、色々調べながらまとめています。 分量が多いので、とりあえずまずは小出しにAppleのPUSH通知の特徴・ノウハウについてまとめたものを公開します。 → 「リアルタイム更新処理」全体にフォーカスした記事も書きましたヽ(・ω・`) iOS - チャットなどリアルタイム更新が必要なスマフォアプリの構成について考えてみた - Qiita アプリが終了状態になっていてもサーバーから通知出来る唯一の手段 まず当たり前のことからですが、最大の特長だと思います。 この理由によって、双方向通信などを併用するにしてもPUSH通知対応は必須です。 (サーバー経由でなければ、位置情報トリガーなど他にもいくつか終了状態から起こす方法は存在します。) ユーザーにPUSH通知を不許可にされたら届かない さらに、初回の確認で不許可にされた

    iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita
    clavier
    clavier 2015/07/22
    iOSのPUSH通知(APNS)の特徴・ノウハウまとめ(iOS 9まで対応) - Qiita
  • Swift実行ファイルを逆アセンブルして、最適化具合を正確に把握する方法 - Qiita

    SwiftはOptimization Levelによって顕著にパフォーマンスに差が出ます。 参考: Apples to apples, Part II · Jesse Squires また、Dynamic Dispatchでの呼び出しもオーバーヘッドになります。 参考: Swiftのfinal・private・Whole Module Optimizationを理解しDynamic Dispatchを減らして、パフォーマンスを向上する - Qiita ドキュメントなど読み解けば「どういう記述をすればどうコンパイルされるか」は大体予測付きますが、やはり実際にその予測通りになっているかは確認しておきたい時があります。 特にロガーなどグローバルに呼び出されるものの場合、そういう確認大事だと思っています。 (この記事もロガーの検証が元々の目的で、そのために調べてまとめています。ロガーについても記事

    Swift実行ファイルを逆アセンブルして、最適化具合を正確に把握する方法 - Qiita