サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
grandbig.github.io
はじめに 先日ふと調べ物をしていたところ、 iOS 13 – Attempting to store >= 4194304 bytes of data in CFPreferences/NSUserDefaults on this platform is invalid という何やら気になる話を見つけました。 どうも iOS13 からは、 UserDefaults に保存できる容量が 4194304 bytes と制限が追加されたようだと言うのです。 これは実際にやってみるっきゃない!ということで実験をしてみました。 実験 実際に筆者が実行した実験内容は下記の通りです。 iOS13.1.3 の端末を用いて、 UserDefaults への保存の合計容量が 4194304 bytes を超過すると怒られるのか それでは実際に見ていきましょう。 実験に利用したソースコード 制限が 419430
はじめに 今回はiOS13で新たに追加された BackgroundTasks Framework について見ていきたいと思います。 基本的には、 WWDC2019動画の『Advances in App Background Execution』を見ながら実践してみました。 ですが、微妙に躓くところもあったのでメモとして残しておきたいと思います。 BackgroundTasksとは まず、 BackgroundTasks の説明です。 BackgroundTasks はiOS13から利用できる新しいFrameworkになります。 BackgroundTasks には大きく分けて下記2つのAPIが存在します。 Background Processing Tasks Background App Refresh Tasks Background Processing Tasks Backgrou
はじめに 最近、iOSアプリ開発をしている際に、 デザイナーさんが指定している色をXcode上で指定しているにも関わらず、 iPhoneで見た時に、デザイナーさんが指定した色になっていない といった話が出ました。 結論から言えば、 デザイナーさんが利用しているツール(PhotoshopやXdなど)と、 エンジニアが利用しているXcodeとで、 指定している 色空間が異なる ことが原因でした。 筆者は過去に同様の問題に直面した経験があったため、すぐに理由の予測がついたのですが、 ふと『元々こういった話って開発時に出てきていただろうか?』と疑問に思いました。 そこでXcodeでの色空間について触りを見ていきたいと思います。 Xcodeの色空間について Xcodeでは様々な方法で色を定義・設定することができます。 しかしながら筆者が見る限り、デフォルトの色空間の指定は、色の設定方法次第で異なって
はじめに 今回は AutoLayout の中でもしっかりと知っておきたい以下2つを紹介します。 Content Hugging Priority Content Compression Resistance Priority 上記2つを利用することで、各サイズでの想定されたデザインを再現することができます。 題材の紹介 今回説明に利用する題材は以下とします。 UILabel 2つが配置されたカスタム UITableViewCell を持つ UITableView の表示 UITableViewCell 内に2つの UILabel を配置するために UIStackView を利用 上記に表示した UITableViewCell に付与された制約は次の通りです。 UIStackView の左右に SuperView に対して 8pt の制約を付与 UIStackView のY位置を Super
はじめに 最近、開発していて微妙にハマった UITableView を reloadData 後に、スクロール位置を移動させる方法についてメモしておきたいと思います。 UITableView で一覧表示をするアプリを開発している際に、 新規データに更新後、スクロール位置を変更したい場合があるかと思います。 その方法について書いていきます。 スクロール位置を変更させる方法 ざっとググってみるだけで幾つか方法が見つかると思います。 例えば… self.tableView.contentOffset = CGPoint(x: 0, y: -self.tableView.contentInset.top) を設定する self.tableView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: false
はじめに さて、Redisに引き続きMariaDBをDockerコンテナ内のUbuntuにインストールしてみたいと思います。 今回扱う環境は以下です。 Ubuntu: 16.04.2 LTS MariaDB: Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 では早速インストール方法から見ていきましょう。 MariaDBのインストール これまで通りで非常に簡単です。 // 念のためapt-getをupdate && upgrade $ apt-get update $ apt-get upgrade // MariaDBのインストール $ apt-get install mariadb-server // MariaDBがインストールされたことの確認 // /etc配下にmy
はじめに この記事はiOS2 Advent Calendar 2017の10日目の記事です。 本記事では今年発表されたiOS11で改善された UIStackView 周りの Constraint 対応について紹介したいと思います。 UIStackView はiOS8以前に、開発者が AutoLayout を駆使して View と View 間のマージンやパディングを設定していた状況を一変させました。 そんな便利な存在である一方で使い方に慣れるまでに時間がかかったり、なぜかうまくいかないと悩んだりすることもしばしばあることと思います。 その中でも厄介だったのが、 UIStackView の子要素に UIStackView があり、元の UIStackView を非表示にすると Constraint エラーが発生するパターンです。 iOS10で発生するConstraintエラー 例えば、下図の
はじめに 今回は久しぶりにQuickを使ったSwiftコードでのUnitテストについて見ていきたいと思います。 前回記事を書いてから実に1年以上経過しました。 当時、筆者はテスト駆動型での開発を業務で実行することがありませんでした。 最近は当たり前に単体テストを書かずにコードを書くことがありえないという開発環境になってきました。 しかし、それはWEBの世界に閉じており、iOSの世界では未だ、単体テストを書く工数が見合わないといった話が議論されていたりします。 言わんとすることはわからんでもないものの、WEBの世界でもテスト駆動型開発が広まるまではきっと同じような話をしていたのではないかと思ったりしています。 つまり、今後はiOSでも単体テストを書かないなんてありえないといった世界になるのでは?と期待しているのです。 そんな期待を抱きつつ、本記事を書いていきたいと思います。 テスト内容 今回
AltBeaconでiBeacon検知(アプリBG起動編) さて、以前、AltBeaconを使ってAndroidでiBeaconを検知しようで基本的な使い方を説明させて頂きました。 今回はアプリをBackgroundで起動しているときにもiBeaconを検知できるようにしてみようと思います。 Background起動だけであれば、Applicationクラスを使うことで実現できますが、 Serviceクラスを使えば、アプリをBackgroundから削除したとしても動作させることができます。 では早速、ソースコードを見て行きましょう。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4
はじめに 本日は Docker for Mac についてメモ程度に学んだことを書き残しておきたいと思います。 Docker for MacとはMacアプリとしてインストールできるDockerです。 今までは、MacでDockerを利用するためにDocker ToolboxとVirtual Boxをインストールする必要がありましたが、Docker for Macの登場により、いろいろとやってくれそうな感があります。 (筆者もDocker自体にそんなに詳しいわけではないので、1つずつ見ていきたいと思います。) Docker for Macのインストール 簡単かと思いきや、なぜか詰まることもあるので書きます。 インストールはDocker公式ページから可能です。 公式ページを見ると、 Download Docker for Mac という文字が見つかります。 Stable channelとBeta
RedirectAttributesを使ってみよう! さて、本日は久々にSpring Bootの話です。 皆さんはWebアプリケーションを作る中で、「リダイレクト先にパラメータを渡したい!」なんてことはありませんでしょうか? 筆者は先日、そのような状況に鉢合わせたのですが、ググってみてもなかなか求めている答えが見つからず、少々悩んでしまいました。 GETリクエストであればリダイレクト後にURLからリクエストパラメータが取得できますが、 POSTリクエストやURLにリクエストパラメータを表示するわけにいかない仕様の場合はそうもいきません。 そんなときに役に立つのがRedirectAttributesです。 では、早速、使い方を見ていきましょう。 リダイレクト先に文字列を送る まずは単純な例から見ていきましょう。 下記はリダイレクト先に文字列をパラメータとして渡す例です。 // HelloCo
複数のiBeacon(別UUIDのiBeacon)を検知する方法 さて、本日は別々のUUIDを持ったiBeacon信号を補足したいと思います。 iBeaconは案外、電波が遠くまで飛ぶため、幾つかのUUIDを補足できるようにしておくことで、うまくdidEnterRegion, didExitRegionを使い、レンジングでのみ取得可能な値を効果的に使うことができるかもしれません。 今回はiOS8以上を対象に下記サンプルソースを書きました。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6
SourceTreeでgit resetを使いこなそう! さて、本日は Git について書きます。 皆さんは、GitでリモートにPushした内容を取り消したくなることがありませんでしょうか? そんなときに利用するのがgit resetコマンドです。 リモートにPushした内容ということは自分だけの範疇では収まらないため、他の人に影響が出るかもしれません。 それって考えてみると非常に怖いですよね…。 しかし、どうしてもリモートの内容を修正したいことが出てきます。 今回はそんな不安を跳ね飛ばすべく実際に練習してみました。 git reset 今回扱うGitのRepositoryはこちらです。 では実際にgit resetを実行してみましょう。 git reset —soft まずはgit reset --softを実行してみます。 SourceTreeでは下記の手順で実行します。 1.元に戻し
Androidアプリでのログイン画面を考えてみる 筆者はこれまでAndroidアプリでログイン画面を作成するとき、 Person Name / E-mail / Phone などの必須入力項目用のText Fields Password / Password(Numeric) のパスワード入力用のText Fields ログインするためのアクション用のButton のみを配置することを考えていました。 今回はAndroid Studioで初回プロジェクト作成時にLogin Activityを選択することで、 Google側の意図を読み取ってみようと思います。 Login画面のレイアウト では、早速、Android Studioを起動してLogin Activityを選択したプロジェクトを作成しましょう。 (本ブログでは Android Studio 2.0 Beta2 を利用しています。)
はじめに 筆者は決してJetBrains社の回し者ではありません笑 最近、Spring Bootにチャレンジしているのですが、自宅ではvimを使っていました。 なぜかって、IntelliJ IDEA Community版だとSpring Bootプログラミングの際に面倒なことが多いんですもの…。 しかしながら、vimでSpring Bootプログラミングを続けるのもしんどいので、 とうとうIntelliJ IDEA Ultimate版に手を出してしまったということなんです。 IntelliJ IDEA Ultimate版とは さて、早速、IntelliJ IDEA Ultimate版の何が良いかについて説明していきます。 IntelliJ IDEAとはJetBrains社が開発した多言語対応の統合開発環境のことです。 Android StudioがIntelliJ IDEAを元に作られてい
RxSwiftとは Reactive Extensions(以下、Rx)のSwift版です。 と一言で言っても、「Rxとはなんぞや??」となってしまうかと思います。 (多分に漏れず、筆者もそうです…) そこで、いろいろと調べてみると、 「非同期/イベント/時間に関する処理をLINQの形式で簡潔かつ宣言的に記述すること」ができるのが特徴 観測可能 (observable) なシーケンスと LINQ スタイルのクエリ演算子を使って、非同期なイベントベースのプログラムを合成するライブラリ なんて話が出てきます。 確かに非同期処理はソースコードが複雑になりやすいので、何となくRxは良さそうな気がしてきました。 今回はまず触って慣れてみようということで見ていきましょう。 RxSwiftでUI まずはRxSwiftの書き方を覚えるためにUI関連から見てきましょう。 サンプル画面 下記のように画面を作成
はじめに 今年も残すところ1日となりましたね。 筆者にとって2016年は新しいことだらけの1年となりました。 技術的にもこれまで触ってこなかったものに挑戦する機会を得ることができました。 その1つは本日のお題である Redux です。 実は現在進行系で理解に苦しんでいる途中なので、休暇中に理解を促進する意味も込めて記事を書きたいと思います。 Reduxは難しい!? ここ最近、iOSエンジニアとして活動してきた筆者にとって なぜReduxが難しいと感じたのか について語りたいと思います。 結論から言うと、 ReactとReduxを組み合わせた場合の実装から入ったため 難しく感じたのではないかと思っています。 具体的には、ReactとReduxの公式ページや様々な紹介ページを読むと必ず出てくる connect() がかなり難しいと感じました。 プロジェクトに参画するタイミングによっては悠長に勉
はじめに 転職 Advent Calendar 2016 21日目の記事です。 枠が1つ余っているようなので、年の瀬も近いことですし、他に思い出せることがないか今年の転職を振り返っていました。 少しでも有益な情報を書こうという想いの元、表題の件について書いていきたいと思います。 転職 Advent Calendar 2016: 人生初転職を振り返るを先に読んで頂けると話に入りやすいかもしれません。 自己紹介 改めて自己紹介です。 社会人6年目 30歳(転職活動時は29歳) 独身 iOSエンジニア(+雑多に技術に勤しむ) どうぞよろしくお願いします。 5W1Hで簡単に振り返る転職活動 Who: 私は When: 2015年10〜12月に Where: 東京都内で How: 転職エージェントを利用して Why: 内製エンジニアとして高みを目指して働きたいので 転職活動をしていました。 転職活動
はじめに 本日はいつもと少し違う視点でブログを書きたいと思います。 今回取り上げるのは『チームでのApple Developer Programの活用方法』です。 iPhoneが世に出てから数年の月日が経っているものの、未だにApple Developer Programの使い方が成立していないところも多いです。 そこで、筆者が考える手法について備忘録の意を含めて書きたいと思います。 Apple Developer Programとは まずはApple Developer Programを簡単に説明していきます。 Apple Developer ProgramのMembershipを購入することで下記のことができるようになります。 iPhone, iPad, Apple Watch, Mac用のアプリを世界中に配信できます Appleが開発者向けに提供しているAppの高度な機能を利用できま
はじめに 転職 Advent Calendar 2016 11日目の記事です。 こんなにもランキング上位に来るとは夢にも思っていなかったので、気軽に参加した手前、内容に悩みました笑 が、振り返りの良きタイミングと軽く捉えて話を進めていきたいと思います。 今、転職に一歩踏み出そうか悩んでいる方達へのささやかな参考にでもなれば幸いです。 自己紹介 まずは自己紹介です。 社会人6年目 30歳(転職活動時は29歳) 独身 iOSエンジニア(+雑多に技術に勤しむ) どうぞよろしくお願いします。 転職理由 転職理由を話す前に1社目での経験について触れておこうかと思います。 1社目での経験 実は大学では機械工学を専攻しており、旋盤やフライス盤を扱っていた私ですが、縁あって大手通信会社に就職しました。 そんな私ですからプログラミングはおろかITや通信に関する技術や知識など持ち合わせていませんでした。 当時
NSDateFormatterとは さて、本日はNSDateFormatterについて見ていきます。 NSDateFormatterは NSDateからStringへ変換する際に指定するフォーマットオブジェクト StringからNSDateへ変換する際に指定するフォーマットオブジェクト として使ったりします。 (他にもNSCalendar等々で利用します。) 基本的な変換は下記のようにできます。 func convertStringFromDate(date: NSDate) -> String { let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSSSSS" return dateFormatter.stringFromDate(date) } 続いて、よく利用す
アプリ内課金とは アプリ内課金とはiTunes Storeを通してアプリ内の様々なものを購入する機能です。 例えば、 電子書籍アプリの購読 コミュニケーションアプリのスタンプ ゲームアプリの協力なアイテム などが該当します。 2と3に関しては買い切りプランとして、1は一定の購読期間を持ったプランとしてAppleから提供されています。 本記事では一定の購読期間を持ったプラン 自動更新購読(Auto-Renewing subscription) について書きます。 自動更新購読(Auto-Renewing subscripion)とは アプリ内課金をアプリに実装する場合、もちろん事前にできる限りのテストをしなければいけません。Appleはテスト用にSandbox環境を用意しています。 では、Sandbox環境と本番環境は何が違うのでしょう。 また、アプリがどの状態のときにSandbox環境で試
Xcode8が登場! 先日、Xcode8がiOS10と共に一般公開されました。本ブログの初期の頃にXcodeを始めてみよう!という記事を書きましたが、この頃がXcode4.6.3であったことを考えると何だか感慨深いですね。 なんて感傷に浸りたい気持ちとは裏腹にXcode8ではこれまでと大きく変わっている部分があるとのことで、少しではありますが見ていこうと思います。 プロジェクトの新規作成 まずはプロジェクトの新規作成フローから見ていきます。 1.Xcode8を起動する 2.作成するプロジェクトの形式を選択する 3.プロジェクトの詳細を決める 4.プロジェクトを保存する レイアウト構成やTeamの入力項目が増えただけで大きな違いはなさそうです。 Xcode8のGeneral 続いて、Xcode8で変わったと話題の General を見ていきましょう。 上図を見ると、 Display Name
本日はtabBarControllerとUINavigationControllerを両方使いたい場合の方法を説明します。 方法は簡単です。 tabBarControllerを先に追加して、 その子要素にUINavigationControllerを追加してください。 具体的に図で説明します。 1.storyboardでtabBarControllerを追加 XcodeメニューのEditor > Embed in > Tab Bar Controller を選択してください。 すると、下図のようにstoryboardにTab Bar Controllerが追加されます。 このままでは、tabBarにitem(項目)が1つしかないので、ViewControllerを追加しましょう。 2.ドラッグ&ドロップでstoryboardにUIViewControllerを追加 右メニューから View
Facebookログインの実装方法 公式ページのfacebook for developersを見るのが、一番良いと思いますが、 あちこちページを飛ばされるので、順を追って説明することにします。 ※ 本記事で利用しているFacebook SDKは v4.11.0 です。 1.Facebookログインを選択する 2.Get Startedを選択する 3.iOSを選択する 4.利用手順の概要を読む 5.Facebookアプリを作成する ※ CocoaPodsでFacebook SDKを取り込むので、ダウンロードはしません。 「新しいアプリを作成」を選択すると、アプリ作成画面が表示されるため、任意の値を入力してください。 6.作成したFacebookアプリにiOSアプリ用の設定を追加する 追加された設定項目に値を入力して、「変更を保存」ボタンを選択します。 バンドルIDを入力 シングルサインオン
TabHostとTabLayoutについて 前回、AndroidでTabHostを使ったアプリの作り方について見ていきましたが、本日は TabLayout を使ったアプリの作り方を見ていきたいと思います。 なぜ似たような名前のクラスがあるのかと思いますよね? 実はTabHostはもう随分前から非推奨とされており、同様の機能を実装するために TabLayout が提供されているようなんです。 もう少し、詳しく説明すると、 『Google I/O 2014』にてMaterial Designが発表されました。 (これはGoogleが提唱するパソコンやスマートフォン向けのアプリまたはWebサイト等の新しいデザイン方式です。) そして、『Google I/O 2015』にてMaterial Designを実現するためのサポートライブラリ『 Android Design Support Librar
はじめに こちらはiOS Second Stage Advent Calendar 23日目の記事です。 筆者はこれまで2年と少し技術ブログを投稿してきましたが、Advent Calendarへの投稿はこれが初めてとなります。 どうぞよろしくお願いします。 今回お話させて頂く内容はiOSアプリでの位置情報の取得に関することです。 ほとんどの開発者の方はCoreLocation.frameworkを用いて位置情報の取得をされると思いますが、HTML5のGeolocation APIを使っても位置情報の取得をすることができます。 とは言え、なぜわざわざiOSのパートで HTML5 による位置情報取得の話をするかと言うと1つ理由があるんです。 その理由を紹介しつつ、現代のiOSによるHTML5のGeolocation APIでの位置情報取得について話したいと思います。 2012年当時のGeolo
jazzyとは さて、本日はjazzyについて書こうと思います。 jazzyはSwiftで書いたプロジェクトのリファレンスを自動で生成できるツールです。 最近、熱いMobile DatabaseであるRealmと同じチームが開発しているようです。 今のところ、他に良さそうなツールはないんじゃないでしょうか? 兎にも角にも、早速使ってみることにします。 jazzyのインストール jazzyのインストールは簡単です。 下記コマンドを実行してください。 sudo gem install jazzy jazzyのコマンド jazzy -hを実行してコマンドを確認してみましょう。 下記のような結果が得られるはずです。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
Volleyではなく、OkHttpを使おう! さて、本日は久しぶりにAndroidの話です。 これまでAndroidの通信ライブラリとして活躍してきた Volley が敬遠されている傾向があります。 と言うのも、Volleyが依存しているApache Http ClientがAPI Level22からdeprecatedになったためです。 では、今後は何を使っていけば良いのでしょうか? もちろん開発者自身で通信処理を0から実装することも悪いことではないのですが、 やはり、少しでも開発効率を良くするためにオープンソースを利用したいところですよね。 そこで、昨今、皆が使っているものとしてOkHttpというものがあります。 これは HTTP だけでなく、 HTTP/2 も対応しているため、きちんと最新を追えているという安心感がある点も良い印象です。 また、クックパッド開発者ブログでも OkHtt
次のページ
このページを最初にブックマークしてみませんか?
『Takahiro Octopress Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く