タグ

ブックマーク / www.toyship.org (25)

  • iOS17で自分の声を作ってみました - Toyship.org

    この秋にリリースされる予定の iOS17では、Personal Voiceという新機能が搭載されています。 自分の声をiPhone に学習させ、どんな文章でも自分の声で読んでもらうことができる機能です。 Personal Voiceの作り方 まず、iOS17のiPhoneで、言語設定を英語にしてください。 設定の「Accessibility」のメニューの「Personal Voice」という項目から「Create a Personal Voice」を選び、あとは画面の指示に従いましょう。 15分ほどずっと英文を読み続けなくてはいけないので、ちょっとつらいです。 周囲に騒音がない場所でやってくださいね。 あとは端末を電源につないで、一晩待ちましょう。 (音声はiPhone内部で生成されますが、だいぶ時間がかかります。気長に待ちましょう。) Personal Voiceの使い方 Persona

    iOS17で自分の声を作ってみました - Toyship.org
    koogawa
    koogawa 2023/06/14
    さっそくPersonal Voiceを録音してみた。明日には生成されてるかしら
  • URLSession で http header 情報を確認する - Toyship.org

    たまに、APIの結果を処理するときに、MIME Typeを見てから確認したいってことはありませんか? 基的にはjsonが返るAPIだけど、エラー時にはhtmlになるのでjsonかhtmlか判別してから処理をしたいとか。 そんなときにはURLResponseを見てみましょう。 API Headerをみる まずは、GithubAPIでheaderを見てみましょう。 $ curl -i https://api.github.com/users/TachibanaKaoru header情報はこんな感じです。 HTTP/2 200 server: GitHub.com date: Tue, 23 Nov 2021 01:14:34 GMT content-type: application/json; charset=utf-8 cache-control: public, max-age=6

    URLSession で http header 情報を確認する - Toyship.org
    koogawa
    koogawa 2021/11/24
  • Combine 最初の一歩 - Toyship.org

    WWDC2019で紹介されたCombineはSwiftで使えるasync frameworkです。 iOS13以上でしか使えないのでプロダクツに導入するのをためらっていましたが、そろそろ導入できそうですね。 まだCombineを導入していない方向けに、Combineの簡単な使い方を書いてみました。 (この記事はXcode v12.0 beta 3 (12A8169g)で確認しています。今後のバージョンアップで動作が変わるかもしれません。) PublisherとSubscriber PublisherはCombineの中核となるもので、目的のデータを時系列順に送る output stream みたいなものですね。 そして、 Subscriberがそのstreamを受け取る側になります。 まずは一番単純な Publisherを動かしてみましょう。 素数の配列からPublisherを作り、Sub

    Combine 最初の一歩 - Toyship.org
    koogawa
    koogawa 2021/01/14
  • クリスマスっぽいスクリーンキャプチャーにしてみる - Toyship.org

    ※これはVOYAGE GROUP エンジニアブログ:Advent Calendar 2013の8日目です。 @TachibanaKaoruです。 今日はアドベントカレンダーの記事ということで、ちょっとクリスマスっぽいことをしてみますね。 スクリーンキャプチャーについて iPhoneでは、ホームボタンと電源ボタンを同時に押すと、どんな画面でもスクリーンキャプチャーを撮ることができます。 ユーザーとしては、画面メモがいつでもとれて便利ですが、著作権のあるコンテンツを含むアプリのようなスクリーンキャプチャーをあまりとられたくないアプリなどではちょっと困ることもあるんですよね。 iOS7からは、ユーザーがスクリーンキャプチャーを撮ったときに、Notificationを受け取ることができるようになりました。 この新しいNotificationを使って、ユーザーがスクリーンキャプチャーを撮ったときに、

    クリスマスっぽいスクリーンキャプチャーにしてみる - Toyship.org
    koogawa
    koogawa 2019/04/24
  • UIActivityViewControllerを使ったデータ共有 - Toyship.org

    UIActivityViewControllerはiOS6で新しく追加されたクラスです。 Facebook、Twitterなど、システムで用意された複数のアイテムに加え、アプリ独自の機能を追加することができる使い勝手のよい新機能です。 iOS6でしか使えないのが難点ですが、是非使いこなしていきたいですね。 UIActivityViewControllerとは UIActivityViewControllerは、指定したオブジェクトに応じて、ファイル共有やメール添付などの機能を自動的に表示してくれるViewControllerです。 UIDocumentInteractionControllerと違い、特定のファイルを指定するのではなく、複数のオブジェクトを指定します。 さらにアプリ独自の機能を追加することもできる、なかなか応用範囲の広いViewControllerです。 システムActiv

    UIActivityViewControllerを使ったデータ共有 - Toyship.org
    koogawa
    koogawa 2019/02/07
  • 2018年行ってよかった海外リモートワーク先まとめ - Toyship.org

    今年は年初のバリに始まって8カ国で海外リモートワークをしました。 バリ(インドネシア)(バリ島で開発合宿 - Toyship.org) ギリシャ(サントリーニ)(サントリーニ島で花粉症退避の開発合宿をしてきました。 - Toyship.org) バンコク フィンランド スウェーデン ノルウェー バルセロナ アイスランド (まだ全部はブログの記事にしていなんですが、お正月休みのうちに書こうと思っています……。) なぜ海外リモートワークなのか 仕事が忙しい。でも仕事は好きだし、別に休暇をとりたいわけじゃない。でもずっと仕事ばかりしていると精神的にもよくないし……なら、「仕事しながら旅行すればいいんじゃん!」ということで始めました。 海外リモートワークをはじめてみると、短期間でも新しい場所で生活することで精神的によい刺激をうけることがわかり、全体的な仕事の能率はあがりました。 また、荷物などを最

    2018年行ってよかった海外リモートワーク先まとめ - Toyship.org
    koogawa
    koogawa 2019/01/01
    旅行しながら仕事するのホントに良い。いつも素晴らしい景色のツイートに癒されています
  • わけあって weak self - Toyship.org

    Closureを使っていたら、ちょっと予想外の動作になってしまっていました。 超・基的なことですが、動作確認したのでメモ。 closureの循環参照と weak self weak self をなぜ使うかというと、循環参照によるメモリーリークを避けるためですよね。 closureを保持するクラスを作って見てみましょう。 下の Personクラスは、生成・消滅した時がわかりやすいように init と deinit にログをいれておきます。 そシンプルに Hello, I am [name]! と表示してくれる normalHello というメソッドを作り、 keepAndDo メソッドで、closureを保持するようにしておきます。 gist.github.com このPersonクラスをつかって、Closureを保持して実行してみましょう。 strongHello では weak sel

    わけあって weak self - Toyship.org
    koogawa
    koogawa 2018/12/13
  • iOSと新しい元号 - Toyship.org

    これはiOSアドベントカレンダーの2日目の記事です。 毎年アドベントカレンダーでは、カレンダーに関係あることを書くことにしています。 今回は来年5月の改元。 iOS始まって以来の改元ですね。 改元前にバグになりそうなポイントを確認しておきましょう。 元号 この業界にいると元号って年に数回くらいしか使わないですよね。 私は使うタイミングになるたびに毎回毎回「今年って平成何年だっけ?」って繰り返していて、結局平成が終わるまで、「今年って平成何年だっけ?」から卒業できませんでした。 きっと次の元号でもずっとそうなんだろうなと思います。 新しい元号になるのは2019年5月。 2019年4月30日までは「平成」、2019年5月1日から新しい元号が適用されます。 iOSエンジニアは改元でなにをすべきか さて、この改元にともなってiOSエンジニアがすべきことはなんでしょうか。 iOSで和暦がUIに表示さ

    iOSと新しい元号 - Toyship.org
    koogawa
    koogawa 2018/12/02
    Calendarの話、とても面白い。DatePickerで"大化"が表示されなくなったの不思議だ🤔 iOS Adventカレンダー2日目
  • ARKit 2.0 でAR経験を共有できるようになりました。あと、アプリを実装しなくてもARできます。 - Toyship.org

    今朝発表された iOS 12では、ARがいままでになく身近になりました。 実は、わざわざアプリを作らなくてもARを実現できるようになっています。 iOS12でなにができるようになったかみてみましょう。 ARKit 2.0 とiOS 12 iOS 12 と同時に、ARKit 2.0が発表され、おおざっぱに言うと、こんなことができるようになりました。 アプリをつくらなくてもARができるようになった。(iOS12) みんなでARを共有できるようになった。(ARKit 2.0) アプリをつくらなくてもAR! 今朝 AppleがUSDZファイルを発表しました。 これは、新しいARのオブジェクトのファイルフォーマットです。 実は iOS 12 では、独自のアプリを使わなくても、このファイルをSafariなどでそのままARとして表示することができます。 (↑これ、ARになっているので、椅子の後ろの背景は

    ARKit 2.0 でAR経験を共有できるようになりました。あと、アプリを実装しなくてもARできます。 - Toyship.org
    koogawa
    koogawa 2018/06/05
    USDZファイル、Safariでも開けるのね
  • iOSDC 2017と個人的なファミリーデー - Toyship.org

    去年に引き続き、今年も iOSDC 2017 にスタッフ/スピーカーとして参加しました! チートシート 今回はスポンサーノベルティにこんなしたじきがはいっています。 今までに発売されたApple製のデバイスで、アプリインストール可能のものをすべて網羅したデバイスチートシートです。 個人的に作りたくて、スポンサーノベルティとして作らせてもらいました。 時間の関係で、先日発表されたiPhone8やiPhoneXなどは残念ながらいれられなかったんですが、Twitterを見ていると、ご好評いただけているようでとてもうれしいです。 チートシートの裏面のiPhone 7 / 7+ 、iPad miniは実寸なのね #iosdc pic.twitter.com/00vjWkRUmm— あさしん (@asashin227) 2017年9月15日 そうなんです、気がついていただけてうれしいです! 裏面は実物

    iOSDC 2017と個人的なファミリーデー - Toyship.org
    koogawa
    koogawa 2017/09/19
    ファミリーデー、すごく良い話だ…
  • ISO8601とUnix Timestamp - Toyship.org

    これはiOS Advent Calendar 2016の12/2の記事です。 アドベントカレンダーはDate/Calendarネタを描こうと思っているので、今年はいろいろな現場で必ず目にする日付フォーマットのバグについて。 ある程度iOSをやっている方には当たり前の話なんですが、なぜかこのバグはいろんなところで見かけるんですよね……。 最近iOSをはじめた人は是非覚えておいてくださいね。 日時情報フォーマット みなさん、APIに日付を含まれる場合、どんなフォーマットにしているでしょうか。 一般的に使われるのは、ISO8601かUnix timestamp。 ISO8601はWebの世界で標準的に使われている日時を表す文字列、Unix timestampは1970/1/1からの秒数を表す数値です。 ISO8601は文字列なので、ぱっと見て日時を識別できるのが利点であり、Unix timest

    ISO8601とUnix Timestamp - Toyship.org
    koogawa
    koogawa 2016/12/03
  • iOSDC 2016にスタッフとして参加しました - Toyship.org

    土曜日に、練馬ココネリホールで開催された国内初の iOS Developerの祭典、iOS Developers Conferenceにスタッフとして参加しました。 (こちらはスタッフの@motokieeさんが作ったオープニングビデオ。カッコイイ……。) スタッフ業務 私の担当は、受付や入り口周辺のホワイエの雑務。 今回受付は Pass Marketのチケットを利用して、QRコードiPhoneアプリで読み込む形で行ったんですが、みなさんiOSエンジニアだけあって、すっとQRコードiPhoneの画面でみせてくださる方が多くて助かりました。 Apple WatchでQRコードをみせてくださった方も、1割くらいいらっしゃいました。 まちがいなく、日国内で開催されたカンファレンスで一番Apple Watch使用率が高かったと思います。 UICollectionView 今回はスタッフとして参

    iOSDC 2016にスタッフとして参加しました - Toyship.org
    koogawa
    koogawa 2016/08/22
    "まちがいなく、日本国内で開催されたカンファレンスで一番Apple Watch使用率が高かったと思います" 👍
  • if let の変数名 - Toyship.org

    SwiftでOptional値をunwrapするときに一番使う if let 構文。 そのときの変数名の扱いについてみなさんはどうしているでしょうか。 if let Swiftで導入されたOptional、このOptional変数をOptionalではない変数にする unwrap 処理として一般的なのが if let 構文です。 下記のコードでは、aはInt?型なのでIntまたはnilが入っているので、実際にこのなかの値を判定する時には、if let構文でunwrapする必要があります。 let a : Int? // (change a value) if let b = a { print("a : \(a)") print("b : \(b)") } 上記のようにif letすると、 a はInt?型、bはInt型となり、aをunwrapしたものがbとなりますね。 さて、この場合、み

    if let の変数名 - Toyship.org
    koogawa
    koogawa 2015/11/21
    "基本的に名前は限られた資源なので、セオリーとしては無駄に増やさない方が良いです" これは確かに。
  • Swift 2.0 の新しいOption、OptionSetType - Toyship.org

    Swift 2.0では、Optionの型が変わりました。 あたらしく導入された OptionSetType についてちょっと見てみました。 OptionSetTypeとは 最近、Swift1.2の既存プロジェクトSwift2.0対応を少しずつ始めたんですが、UIUserNotificationType の option 設定でコンパイルエラーが発生。 こんな感じのコードを書いていたんですが、「Binary operator '|' cannot be applied to two UIUserNotificationType operands」というエラーが表示されていました。 let types : UIUserNotificationType = UIUserNotificationType.Badge | UIUserNotificationType.Alert | UIUserN

    Swift 2.0 の新しいOption、OptionSetType - Toyship.org
    koogawa
    koogawa 2015/11/15
  • iOS9のコンテンツブロッカー - Toyship.org

    WWDCで新しいiOS9の機能がいろいろと発表されましたが、Safariでの表示項目を制限することが 「コンテンツブロッカー」機能については、Web業界の方はちょっと気になるのではないでしょうか。 さっそく調べてみました。 (なお、この記事はAppleが一般に公開している情報を元に書いています) コンテンツブロッカー コンテンツブロッカーとはiOSやMacでSafariに表示する項目を、自動的に制限してくれる機能です。 iOSでは、コンテンツブロッカーは、Today WidgetやShare ExtensionのようにApp Extensionとして提供されます。 Mobile Safariでwebを見る時に、cssで指定された特定の要素を非表示にしたり、特定のファイルを読み込まないようにすることができます。 Safari以外のブラウザ(Chromeなど)には影響がありません。 また、iO

    iOS9のコンテンツブロッカー - Toyship.org
    koogawa
    koogawa 2015/06/16
    App Extensionとして提供される
  • 日付が変わったときの処理 - Toyship.org

    カレンダーなどのアプリで、画面に今日の日付などを表示している場合、真夜中に日付が変わった瞬間にUI表示を変えたりなどの処理をしたいことがありますよね。 そのためだけにNSTimerなどを使ってタイマー処理をするのも面倒くさいので、たいていはスルーしていると思うんですが。 実はそんな時に使える便利な機能があります。 UIApplicationDelegateで、applicationSignificantTimeChangeをオーバーライドしておけば、日付が変わった瞬間にこの関数が呼ばれて、UI変更の処理をすることができます。 - (void)applicationSignificantTimeChange:(UIApplication *)application{ NSLog(@"日付の表示を変えてください。"); } こんな時によばれるので、日時を扱うアプリでは、実装しておくのがお勧めで

    日付が変わったときの処理 - Toyship.org
    koogawa
    koogawa 2015/03/16
    UIApplicationDelegate applicationSignificantTimeChange知らなかった
  • Apple Watchで文字入力 - Toyship.org

    これはWatchKit Advent Calendar 2014の24日目の記事です。 少しずつですが、Apple Watchでの文字入力がやっと試せるようになってきました。 text input controller Apple Watchは画面が小さいので、iPhoneのようなソフトウェアキーボード画面はありません。 その代わりに、「text input controller」とよばれる、少し違ったタイプの文字入力の専用画面を表示します。 「text input controller」は、WKInterfaceControllerのpresentTextInputControllerWithSuggestionsメソッドで表示することができます。 現在のWKInterfaceControllerの上に、Modalアニメーションで「text input controller」が表示されま

    Apple Watchで文字入力 - Toyship.org
    koogawa
    koogawa 2014/12/25
    あらかじめ選択できる文字列を設定しておく
  • Apple Watchのコントロールメニュー - Toyship.org

    これはWatchKit Advent Calendar 2014の23日目の記事です。 Apple Watchでは、すべての画面にコントロールメニューをつけることができます。 狭い画面にはボタンもあまり配置できないので、コントロールメニューをうまく使うと有効に使えそうです。 コントロールメニューの使い方 コントロールメニューは、それぞれの画面ごとに1個から4個までつけることができます。 (コントロールメニューをつけないことも可能です。) 画面を「強く押す」とコントロールメニューが表示されるそうですが、実物のApple Watchがないのでどのくらい強く押せば表示されるのかはまだよくわかりません。 Apple Watchのシミュレーターでは、長押しをすると表示されるようになっています。 コントロールメニューのつけ方 コントロールメニューはStoryboard上で設定することもできますし、コー

    Apple Watchのコントロールメニュー - Toyship.org
    koogawa
    koogawa 2014/12/24
    Apple Watchの画面を強めに押すことで1〜4個までのメニューを表示できる
  • Apple Watchの画面遷移 - Toyship.org

    これはWatchKit Advent Calendar 2014の22日目の記事です。 WKInterfaceControllerの生成 WKInterfaceControllerは、現時点のWatchKitではStoryboard上でしか作ることができません。 iOSのUIViewControllerは、Storyboardやxibを使わなくても、コード上の記述のみで作成することができました。 UIViewController* newViewCon = [[UIViewController alloc] init]; WKInterfaceControllerもコードで生成することができないわけではありません。 下記のように書くと、オブジェクトが生成され、メモリも確保されています。 WKInterfaceController* watchCon = [[WKInterfaceContr

    Apple Watchの画面遷移 - Toyship.org
    koogawa
    koogawa 2014/12/24
    PushとModalの二つのタイプがある
  • Apple Watchの画面レイアウト - Toyship.org

    これはWatchKit Advent Calendar 2014の20日目の記事です。 Apple Watchの画面レイアウトはiOSアプリと少し違います。 簡単にまとめてみました。 Apple Watchの画面レイアウト Apple Watchでは、画面に様々な画面パーツを置くことができます。 ただ、iOSと大きく違う点は、その画面パーツの位置とサイズをCGRectで指定することができないということです。 では、Apple Watchでは、画面パーツの位置やサイズをどのように指定するのでしょうか。 画面パーツのサイズ指定 まず、画面パーツのサイズ(幅、高さ)は下記の3通りの方法で指定することができます。 Size to fit Content(親アイテムをFillする指定) Relative to Container(親アイテムに対する比率で指定) Fixed(ピクセル値指定) 「Siz

    Apple Watchの画面レイアウト - Toyship.org
    koogawa
    koogawa 2014/12/23
    “iOSと大きく違う点は、その画面パーツの位置とサイズをCGRectで指定することができない”