Google AIYでLチカ

冬休みなので、買っておいた Google AIYをいじってみました。 まずはLチカから! 必要なもの まず、必要なものを準備しましょう。 Google AIY Voice Kit Raspberry Pi 3 Model B microSDカード あと、組み立てる時にこちらも必要になります。 USBキーボード …

ARKitによる自分の位置判定

iOS

これはARKit Advent Calendarの17日目の記事です。(遅れてすみません) ARKitでは、空間にある平面などを判定できます。 同時に、自分が動いた時に自分の位置もわかるので、その位置をとってみましょう。 ARKit まずは、XcodeでARKitのサンプルアプリを作り…

iOSDCチートシート

iOS

これはiOSDC Advent Calendarの12日目の記事です。 今年のiOSDCで配ったチートシートのお話です。 iOSDC チートシート 今年の9月に開催されたiOSDCでは、スポンサー(企業スポンサー、個人スポンサー)のみなさまに何点かノベルティーグッズを配ったんです…

SwiftにおけるAssertとFatalError

iOS

これはSwift Advent Calendar 2017の10日目の記事です。 assertはSwiftでコードを書く時の基本的なデバッグ機能です。 いろいろな会社のiOSプロジェクトを拝見していますが、assertを有効につかっているプロジェクトは意外と少ない印象なんですよね。 書く癖…

究極のTKG

これはTKG Advent Calendar 2017の5日目の記事です。 卵かけごはん、美味しいですよね。 今朝は、タカラトミーさんからでている「究極のTKG」を使ってTKGを食べました。 卵のからをわって、黄身と白身をわけて、白身をあわだててくれる、究極のTKGを作ってく…

iOS11で変わったロケール

iOS

これはiOSアドベントカレンダーの2日目の記事です。 毎年アドベントカレンダーでは、カレンダーに関係あることを書くことにしています。 今回はiOS11で仕様変更があったロケールについて。 ロケールとは iPhoneの設定に、「言語と地域」という項目がありま…

iOSDC 2017と個人的なファミリーデー

iOS

去年に引き続き、今年も iOSDC 2017 にスタッフ/スピーカーとして参加しました! チートシート 今回はスポンサーノベルティにこんなしたじきがはいっています。 今までに発売されたApple製のデバイスで、アプリインストール可能のものをすべて網羅したデバイ…

try! Swift でなぜ登るのか話してきました。

第二回の try! Swiftで Why We Climb というタイトルでLTをしてきました。 LT応募 try! Swiftは、去年は参加者からのcfp(call for paper)の募集がなかったんですが、今年はLTの募集がありました。 これは是非参加したい!と思ったので、当選確率があがるよう…

Swift の Conditional conformances(条件付き適合)

この記事はSwift Advent Calendar 2016の24日目の記事です。 Swift4で導入されるConditional conformances(条件付き適合)について調べてみました。 Conditional conformances(条件付き適合)とは Swift Evolutionでは、今後のSwift向けのいろいろな機能が…

ISO8601とUnix Timestamp

これはiOS Advent Calendar 2016の12/2の記事です。 アドベントカレンダーはDate/Calendarネタを描こうと思っているので、今年はいろいろな現場で必ず目にする日付フォーマットのバグについて。 ある程度iOSをやっている方には当たり前の話なんですが、なぜ…

iOSDC 2016にスタッフとして参加しました

iOS

土曜日に、練馬ココネリホールで開催された国内初の iOS Developerの祭典、iOS Developers Conferenceにスタッフとして参加しました。 (こちらはスタッフの@motokieeさんが作ったオープニングビデオ。カッコイイ……。) スタッフ業務 私の担当は、受付や入り…

I love you. I know.

iOS

これはVOYAGE GROUP Advent Calendar 2015の13日目の記事です。 今日はiPhoneを使った音声認識の話です。 スターウォーズ! 今月の18日、いよいよスターウォーズの最新作、「フォースの覚醒」が公開されますね。 前作から10年、懐かしいキャラにも会えるし、…

if let の変数名

SwiftでOptional値をunwrapするときに一番使う if let 構文。 そのときの変数名の扱いについてみなさんはどうしているでしょうか。 if let Swiftで導入されたOptional、このOptional変数をOptionalではない変数にする unwrap 処理として一般的なのが if let …

Swift 2.0 の新しいOption、OptionSetType

Swift 2.0では、Optionの型が変わりました。 あたらしく導入された OptionSetType についてちょっと見てみました。 OptionSetTypeとは 最近、Swift1.2の既存プロジェクトのSwift2.0対応を少しずつ始めたんですが、UIUserNotificationType の option 設定でコ…

iOS9のコンテンツブロッカー

WWDCで新しいiOS9の機能がいろいろと発表されましたが、Safariでの表示項目を制限することが 「コンテンツブロッカー」機能については、Web業界の方はちょっと気になるのではないでしょうか。 さっそく調べてみました。 (なお、この記事はAppleが一般に公開…

WWDC 2015 に参加しました

今年は久しぶりにWWDCに当選しました。 前回参加したのが2010年だったので、5年ぶりでした。 今年のWWDC 久しぶりの参加になったんですが、5年前より会場の快適さがかなりアップしていました。 いたるところに座りごこちのいいソファや、電源と有線LANが完…

Swift でUIWebViewにUserAgentを設定する

SwiftでUIWebViewにuseragentを設定する場合の処理です。 (Objective-Cと同じですが……。) 独自のUserAgentを設定する アプリ独自のUserAgentを設定する場合にはこちら。 let originalUserAgent = "Toyship Original Application" let agentDict = ["UserAg…

Swift コードをコンパイルする

Swift で作ったコードはclangでコンパイルして実行ファイルにすることができます。 コマンドラインツールなどを作成したりするのにいいかもしれません。 Swiftのコンパイル Swiftのコンパイルコマンドは swiftc です。 デフォルトの swiftc は /user/bin に…

日付が変わったときの処理

iOS

カレンダーなどのアプリで、画面に今日の日付などを表示している場合、真夜中に日付が変わった瞬間にUI表示を変えたりなどの処理をしたいことがありますよね。 そのためだけにNSTimerなどを使ってタイマー処理をするのも面倒くさいので、たいていはスルーし…

Swift の Embedded Framework と namespace

iOS

Embedded Frameworkを、Swiftで作ると、Objective-Cで作るときとは違った利点がいろいろと見えてきました。 SwiftによるEmbedded Framework Embedded Framework in Objective-Cのエントリで、Objective-CによるEmbedded Frameworkを実装してみましたが、Swif…

Embedded Framework を iOS7 以下で使うには

iOS

iOS8で導入されたEmbedded Framework ですが、iOS7以下で使うにはどうすればいいでしょうか。 iOS7でもEmbedded Frameworkがしたい Objective-C で Embedded Frameworkで実装したEmbedded Frameworkは、iOS8からしか使えません。 でもまだまだiOS7対応も必要…

Objective-C で Embedded Framework

iOS

iOS8から使えるようになったEmbedded Framework。 その使い方と、iOS7 でEmbedded Frameworkを使う方法を調べてみました。 Embedded Frameworkとは Embedded Framworkは、複数のプロセスから利用できる共通ライブラリで、iOSでは、OS8のApp Extensionと同時…

Apple Watchで文字入力

これはWatchKit Advent Calendar 2014の24日目の記事です。 少しずつですが、Apple Watchでの文字入力がやっと試せるようになってきました。 text input controller Apple Watchは画面が小さいので、iPhoneのようなソフトウェアキーボード画面はありません。…

Apple Watchのコントロールメニュー

これはWatchKit Advent Calendar 2014の23日目の記事です。 Apple Watchでは、すべての画面にコントロールメニューをつけることができます。 狭い画面にはボタンもあまり配置できないので、コントロールメニューをうまく使うと有効に使えそうです。 コントロ…

Apple Watchの画面遷移

これはWatchKit Advent Calendar 2014の22日目の記事です。 WKInterfaceControllerの生成 WKInterfaceControllerは、現時点のWatchKitではStoryboard上でしか作ることができません。 iOSのUIViewControllerは、Storyboardやxibを使わなくても、コード上の記…

WKInterfaceControllerの生成など

これはWatchKit Advent Calendar 2014の21日目の記事です。 WKInterfaceControllerとは、Watch Kit で、一画面の描画を担当するコントロールクラスです。 iOSでいえばUIViewControllerにあたるクラスですね。 WKInterfaceController の初期化時の処理 WKInte…

Apple Watchの画面レイアウト

これはWatchKit Advent Calendar 2014の20日目の記事です。 Apple Watchの画面レイアウトはiOSアプリと少し違います。 簡単にまとめてみました。 Apple Watchの画面レイアウト Apple Watchでは、画面に様々な画面パーツを置くことができます。 ただ、iOSと大…

WatchKit で Table を表示する

これはWatchKit Advent Calendar 2014の19日目の記事です。 WatchKitではいろいろなUIコントロールが表示できますが、ここではTableを表示してみましょう。 テーブル用クラスの作成 WatchKitでテーブルを表示する場合は、UITableViewではなくWKInterfaceTabl…

Objective-C オブジェクト間通信のパターン

iOS

この記事は、Tech Women Advent Calendar 2014の17日目の記事です。 基本ですが、あらためてiOS開発でのオブジェクト間通信についてまとめてみました。 オブジェクト間通信 Objective-Cでソースコードを書いているときに、オブジェクト同士で通信を行う必要…

バスボタンでビルドしてみました

この記事はVOYAGE GROUP エンジニアブログ Advent Calendar 2014の13日目の記事です。 ちょっと前に、業務用のバスボタンを買ったので、バスボタンを押してiPhoneアプリのビルドができるシステムをつくってみました。 ビルドだけじゃなくて、バスボタンで起…