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

  • Swift Package Manager(SwiftPM)で作ったコマンドラインツールをHomebrewに登録する方法 - Qiita

    mono0926/LicensePlist という、Carthage・CocoaPodsおよび手動指定ライブラリから、iOS設定アプリに載せられるplist形式のライセンスファイル群を生成するコマンドラインツールを作りまして、それをHomebrewに登録したのでやり方を共有します。 結果的にはまあまあ簡単ですが、Homebrew登録自体が初めてだったので、多少手こずりました。 前提 Swift Package Manager(SwiftPM)で作ったコマンドラインツールのHomebrew登録 家Homebrewリポジトリへの登録ではなく、brew tap方式 Bottlesという、バイナリ配布対応はスキップしたため、インストール先で都度ビルドが必要 対応手順 Makefile を作成 体のコマンドラインツールリポジトリで Makefile を用意します。SwiftPM ではHomebr

    Swift Package Manager(SwiftPM)で作ったコマンドラインツールをHomebrewに登録する方法 - Qiita
    mono0926
    mono0926 2017/05/15
    セルクマʕ ·ᴥ·ʔ
  • Apple App Storeへのレビューに対して返信できるようになりました🎉 - Qiita

    タイトル通りで、詳しくはこちらのApple公式ドキュメントに載っています: Monitoring Reviews on the App Store Responding to Reviews on the App Store - Apple Developer Ratings, Reviews, and Responses - App Store - Apple Developer 少し前からプレリリース版のドキュメントとして公開されていましたが、今朝のiOS 10.3リリースのタイミングで、iTunes Connect上で実際に操作できるようになり、かつドキュメントも正式版になりました。 ちなみに、リリース日は25日にTweetした予想が当たりました( ´・‿・`) iOS 10.3は3/28に正式リリースな気がする👃 — 🐶ブレス オブ ザ イッヌ🐶 (@_mono) March

    Apple App Storeへのレビューに対して返信できるようになりました🎉 - Qiita
    mono0926
    mono0926 2017/03/28
    セルクマʕ ·ᴥ·ʔ
  • SwiftのString(文字列) APIとの付き合い方 - Qiita

    これは Swift Tweets の発表をまとめたものです。イベントのスポンサーとして Qiita に許可をいただいた上で、このような形(ツイートの引用)で投稿しています。 以下の内容は熟考した上での自分なりの見解でありますが、公式に記載されていないものが多く含まれています。もし誤りなど見つけたら指摘していただけると助かります。 それでは、「SwiftのString(文字列) APIとの付き合い方」の発表を始めます。 https://swift-tweets.github.io の発表概要に記載した通り、そこに挙げている3つの記事は理解済みの前提とします(そうでなくとも分かる話も多いと思いますが)。 #swtws — @_mono まずSwiftの文字列処理をコード例を交えながら見ていきます。SwiftのStringはCharacter・Unicode Scalar・UTF-16・UTF-

    SwiftのString(文字列) APIとの付き合い方 - Qiita
    mono0926
    mono0926 2017/01/15
    セルクマʕ ·ᴥ·ʔ
  • 【翻訳】国際化対応のためのデザイン - 世界中のユーザーにより良いプロダクトを - Qiita

    Design for internationalization – Dropbox Design – Mediumの記事が素晴らしかったので、John Saitoさんに許可をいただいて日語訳しました。 あなたが初めて新しいアプリを試すときを想像してください。そのアプリはTwitter上などで評判を集めている、素晴らしいものだとします。 アプリを立ち上げて、こちらの画面を目にしました: うーん、ちょっと変ですね。画面上部に動画エリアがありますが、キャプションが理解できない言語で書いてあります。また、右下のボタンがはみ出ています。これを見て、良いアプリだと思えるでしょうか? このアプリは元々エルフ語で組まれていて、それからあなたの言語に翻訳されたのです。ほとんどはエルフ語ユーザーで、彼らはあなたの言語でこのように崩れた表示になっていることを把握してませんでした。 信じられないかもしれませんが

    【翻訳】国際化対応のためのデザイン - 世界中のユーザーにより良いプロダクトを - Qiita
    mono0926
    mono0926 2017/01/08
    セルクマʕ ·ᴥ·ʔ
  • IBM OpenWhiskというサーバーレス実行環境を用いて、Swiftでおみくじ🎍 - Qiita

    クラウドサービスは、AWS・Azure・GCPなどありますが、Swiftに対応しているサービスがあるのは現状IBM Bluemixのみのはずです(他のサービスでも仮想UbuntuマシンでSwift実行環境を整えることなどはできるがそれは除く)。 記事では、そのうちOpenWhiskという、サーバーレス実行環境をSwiftで使ってみます。他のクラウドサービスの以下に相当するサービスです。 AWS Lambda Azure Functions Google Cloud Functions Swiftが使える以外にもオープンソース公開されているという特徴があります。そのため、Issue・Pull Requestを投げたり、自前サーバーに環境を構築することができます。 しばらくベータ版でしたが、昨年2016年12月にめでたく正式リリースされました🎉 General Availability:

    IBM OpenWhiskというサーバーレス実行環境を用いて、Swiftでおみくじ🎍 - Qiita
    mono0926
    mono0926 2017/01/03
    セルクマʕ ·ᴥ·ʔ
  • 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
    mono0926
    mono0926 2017/01/02
    セルクマʕ ·ᴥ·ʔ
  • 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
    mono0926
    mono0926 2016/12/25
    セルクマʕ ·ᴥ·ʔ
  • Swift 3.1 を先取り👀 - Qiita

    【追記】 記事 + α の内容を以下で丁寧にまとめました(一部記事のみに記載されている内容もありますが)。 Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の紹介(前編) - Build Insider Swift 3.1のリリースプロセスおよびそれに含まれる変更内容の紹介(後編) - Build Insider そろそろ、Swift 3.1 のことも気になってくる頃かなと思って、それについて書いてみます。 Swift 3.1 で予定されている変更点(現時点) 現在実装済みの主な変更点は、Swift 3.1 の CHANGELOG に記載されています。 現時点では、以下の3点が記載されています。 SR-1446: Nested generics SR-1009: Add methods to an Array containing a specific type SE-

    Swift 3.1 を先取り👀 - Qiita
    mono0926
    mono0926 2016/12/06
    セルクマʕ ·ᴥ·ʔ
  • C#のOfTypeメソッド相当の処理は、SwiftではflatMapで書ける、という話 - Qiita

    【C#】Where(it => it is Xxx).Select(it => it as Xxx)って書かず、OfType使おう!【LINQ】 - Qiitaを見て、Swiftとの対比記事を書いてみようと思いました。 元記事では、C#でコレクションから特定の型のオブジェクトだけ取り出したい場合は、Where・Selectの組み合わせでも出来るものの、OfTypeを使うと簡潔に書けて良い、ということでした。 元記事のコード例から、Unity依存排除してシンプル化するなどして、コード例を書き直してみました。 (Visual Studio for MacがあるとParallelsでWindows仮想マシン起動せずに済んで便利でした( ´・‿・`)) using System; using System.Linq; class Program { class Base { } class A :

    C#のOfTypeメソッド相当の処理は、SwiftではflatMapで書ける、という話 - Qiita
    mono0926
    mono0926 2016/11/23
    セルクマʕ ·ᴥ·ʔ
  • CocoaPods・Carthageでインストールした成果物はバージョン管理に含めるべきか? - Qiita

    以下のTwitterアンケートを見かけたので、記事書いてみました。 結果は、母数が10人なので参考程度にするのが良いと思いますが、僕も多数派の「CocoaPodsもCarthageも含めている」を特に迷い無く選択しています僕は今ではCocoaPodsもCarthageも含めていない運用にしています。 【iOSアプリプログラマに質問】 あなたはアプリのリポジトリにCocoaPodsで取得したソースコードやCarthageでビルドしたフレームワークを含めていますか? — りず (r.izumita) (@rizumita) October 6, 2016 ちょうどCocoaPodsのガイドにこのことが記載されているので、まずはその訳を載せます。 (この記載はわりと有名なはずで、ここでオススメされているからバージョン管理に含める選択を取っている人も多そう。) CocoaPodsのガイドの訳 原文

    CocoaPods・Carthageでインストールした成果物はバージョン管理に含めるべきか? - Qiita
    mono0926
    mono0926 2016/11/23
    セルクマʕ ·ᴥ·ʔ
  • Swiftのつらみ Q&A - Qiita

    Swiftの激しい変更への追従がつらいという意見をちょくちょく目にします。 確かにSwift 1正式リリースから2年経ったSwift 3でかなりの変更が盛り込まれて、その対応が大変というのは分かるものの、それはSwiftを利用する上での必要なコストであると感じつつ付き合っていました。 Swift 3まではこの辛さは妥当、そしてそれ以降はその辛さも激減する、と思っています。 以下、何か思うことがあれば随時追記していくかもです。 「Swift 3 対応つらい」 Swift 3で、言語仕様の安定度的にはようやく所謂1.0レベルという印象 何となく空気読んだり、これまでの変更の激しさ、Swift Evolutionリポジトリなど追うと、言語として今どのくらいのフェーズか把握出来るものの、一応1.0として正式リリースされて、さらに2年経った今でも変更追従コストが大きいことに不満生じるのは分かる Sw

    Swiftのつらみ Q&A - Qiita
    mono0926
    mono0926 2016/11/22
    セルクマʕ ·ᴥ·ʔ
  • Swiftの `_` (アンダースコア) - Qiita

    Swiftの _ (アンダースコア)の絡んだネタをいくつか書いてみます。 戻り値を _ で受けて破棄 Swift 3では、以下のように書くと、Result of call to 'f()' is unusedという警告が発生します。

    Swiftの `_` (アンダースコア) - Qiita
    mono0926
    mono0926 2016/11/18
    セルクマʕ ·ᴥ·ʔ
  • Qiitaの「いいね」について思うこと - Qiita

    こちらの説明を読んで思ったことを書いてみます: 投稿記事やコメントに「いいね」できるようになりました(Contributionの算定基準も変わります)... - Qiita Blog タイトルや冒頭の説明が分かりにくい 最初タイトルや変更後のUI見て、んん???と思って、説明記事をじっくり読んでやっと理解出来ました。 「『いいね』出来るようになったこと」が質では無く、「ストックに来のストックと「いいね」の2つの意味が混ざってしまっていたのでそれを分離した」というのが質だと思います。 自分なりに整理しました: 以前のストックを2種類に分離 ストック: 「今は忙しいから後で読もう」といったときに使うことなどを想定 「いいね」: 「素晴らしい記事を見つけた」という時にも使うことなどを想定 以前のストックを「いいね」に置き換えて、ストックはストック来の意味として別途残す、というイメージ 以

    Qiitaの「いいね」について思うこと - Qiita
    mono0926
    mono0926 2016/11/18
    セルクマʕ ·ᴥ·ʔ
  • Swift Package Manager (SwiftPM) で作るコマンドラインツール - Qiita

    Swift 3でSwift体も安定してきて、Swift Package Manager (SwiftPM) もライブラリ配布・コマンドラインツール作成などには充分使える状態だと思っています。 ただ、SwiftPM を使ってコマンドラインツールを作るまとまった説明があまり出回っていなくて、その意味で少し敷居が高いかな?と思ったので一通りの手順を書いてみます。 コマンドラインツールのお題 説明のためのサンプルとして、MonoGeneratorを作りました。 $ MonoGenerator おはようございます → おはようございます( ´・‿・`) $ MonoGenerator おはようございます --suffix (`・ω・´) → おはようございます(`・ω・´) $ MonoGenerator おはようございます --suffix (`・ω・´) --length 10 → おはようご

    Swift Package Manager (SwiftPM) で作るコマンドラインツール - Qiita
    mono0926
    mono0926 2016/11/17
    セルクマʕ ·ᴥ·ʔ
  • Swift 3での同期処理(排他制御)の基本 - Qiita

    以前、以下の呟きをしましたが、わりと古い方法を利用しているコードが散見されるので、Swift 3での同期処理(排他制御)についてまとめてみます。 getterはsyncでSwiftぽいロックになってて良いけど( ´・‿・`)https://t.co/X2OrjyBmH7 で、Foundation.Lockを使わずにDispatchQueue.sync使おうという話があった。 https://t.co/77zzkNUGLj — mono( ´・‿・`)🐶🍎📱⌚️ (@_mono) August 7, 2016 参考: Concurrent Programming With GCD in Swift 3 - WWDC 2016 - Videos - Apple Developer かつての方法 WWDCスライドのpp.120-123に載っているのでご覧ください。 WWDCで勧められていた

    Swift 3での同期処理(排他制御)の基本 - Qiita
    mono0926
    mono0926 2016/11/16
    セルクマʕ ·ᴥ·ʔ
  • Swiftのtypealiasは別名を与えるだけで型として区別されない、ということに注意して扱うべきという話 - Qiita

    In this case, your parameter's type and its expected content are coherent and in harmony, because the parameter's type was made explicit through defining Path as a type alias for String. This way, your function is still intuitive, readable, unambiguous, yet non-repetitive. 以下の違和感がありました。 pathというパラメーター名がすでにあるのに、さらにわざわざtypealiasでPathという名前を用意していて冗長 他にメリットがあるなら良いがわざわざこのためだけにtypealias使うのは違和感 String型を受ける

    Swiftのtypealiasは別名を与えるだけで型として区別されない、ということに注意して扱うべきという話 - Qiita
    mono0926
    mono0926 2016/11/15
    セルクマʕ ·ᴥ·ʔ
  • Xcode 8.0でOS_ACTIVITY_MODE = disableを指定すると、実機実行時にNSLogが出力されなくなるので注意 - Qiita

    Xcode 8.0でOS_ACTIVITY_MODE = disableを指定すると、実機実行時にNSLogが出力されなくなるので注意iPhoneiOSNSLogSwiftXcode8 【追記】Xcode 8.1 beta2で修正されました Xcode 8.0でシミュレーター実行時にログノイズが大量に出力されてしまうことは、やはり一時的なバグだったようで、修正されました Xcode 8.1b2 release notes: …no longer shows extra logging from system frameworks when debugging applications in the Simulator. 💫 — zachary ✌ (@zadr) October 4, 2016 ‎Xcode 8.1 beta 2 Release Notes Xcode Debug Con

    Xcode 8.0でOS_ACTIVITY_MODE = disableを指定すると、実機実行時にNSLogが出力されなくなるので注意 - Qiita
    mono0926
    mono0926 2016/09/27
    セルクマʕ ·ᴥ·ʔ
  • Swift 3のRange徹底解説 - Qiita

    [2018/05/22 追記] Swift 4.2からは、Rangeの型パラメーター(Bound)によってCountableかどうかが区別できるようになるため、Countable系のRangeは無くなりシンプルになります。 Swift 4.1で導入されたConditional Conformanceのインパクト - Qiita Swift 3のRange周りはけっこうややこしいので、まとめてみました。 Range周りのややこしさはこのあたりに起因していると思っています。 Swift 3のRangeの仕様自体少し複雑 現状の言語制約・型安全性など踏まえて妥当な複雑性だと思っていますが Swift 2.2から大きく変更 Swift 2.2: Range<T>・ClosedInterval<T>・OpenInterval<T> Swift 3.0: Range<T>・ClosedRange<T>

    Swift 3のRange徹底解説 - Qiita
    mono0926
    mono0926 2016/09/25
    セルクマʕ ·ᴥ·ʔ
  • Swiftでプッシュ通知用のDevice Token(Data型)を16進数文字列へ変換する方法 - Qiita

    let token = deviceToken.map { String(format: "%.2hhx", $0) }.joined() The English version is here: How to convert an APNs token to String from Data? 以下、以前微妙な書き方をしていてSwift 3移行時にうまく変換できなくなってしまった反省や、他の書き方などの紹介となっています。 UIApplicationDelegateのapplication(_:didRegisterForRemoteNotificationsWithDeviceToken:)で渡ってくるdeviceToken(デバイストークン)はData型(Swift 2.2まではNSData型)ですが、それを16進数文字列に変換するやり方について紹介します。 僕はSwift 2.2ま

    Swiftでプッシュ通知用のDevice Token(Data型)を16進数文字列へ変換する方法 - Qiita
    mono0926
    mono0926 2016/09/22
    セルクマʕ ·ᴥ·ʔ
  • iOS 10が正式リリースされた今、そろそろ既存アプリのiOS 8サポートは切っても良いだろうかという考察 - Qiita

    iOS 10が正式リリースされた今、そろそろ既存アプリのiOS 8サポートは切っても良いだろうかという考察iPhoneiOSSwiftiOS8ios10 ご存じの通り、iOS 10が2016年9月13日(日時間14日早朝)に正式リリースされました iOS 8は2年前の2014年9月17日正式リリースでしたが、現在iOS 8.0以上をサポート対象として開発中のJOIN US iOS版アプリにおいて、そろそろそのサポートを切っても良いのでは?と考えました。 以下、iOS 8.0以上をサポートしている既存アプリを、iOS 9.0以上サポートに変更しても良いだろうか、という視点中心に古いiOSバージョンを切り捨てることの考察をしていきます。 (その他のバージョン間にも通じる話が多いはずなので、その場合適当に読み替え・解釈お願いします。) iOSのバージョンごとのシェア 2016年9月12日時点で

    iOS 10が正式リリースされた今、そろそろ既存アプリのiOS 8サポートは切っても良いだろうかという考察 - Qiita
    mono0926
    mono0926 2016/09/15
    セルクマʕ ·ᴥ·ʔ