Category Note

Android: Android Studio のエミュレータを Landscape にする

このサイトでは見慣れない投稿記事のアイコンが登場しました(笑) 最近 Android アプリにも手を出し始めたので、これからちょくちょくメモを公開したいと思います。 今回は Android Studio のエミュレータで、デバイスを回転させるショートカット のメモです。 Android Studio のエミュレータを Landscape にする Android Studio でプロジェクト開き、ビルドしたアプリをエミュレータに表示します。 control + fn + F11 でデバイスの向きが変わります。 まとめ Android Studio でコーディングしていると Xcode の良いところ、悪いところがよくわかります。 Xcode でトラブルに遭遇した場合、自身の知識や経験不足からくる問題なのか、Xcode 側の問題なのかの特定に、余計なコストを割いてしまいますが、Android Studio ではそう言ったケースが少ないように感じます。Windows で作業をしているときのような信頼・安心感がありますね。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Android: WebView 画面回転(Portrait / Landscape)に対応する

Android Studio で WebView を表示し、画面の回転に対応させた場合、何もしない状態のままではアプリが落ちる、もしくは WebView がリロードされてしまいます。 Android アプリの場合、画面が回転した際に一旦 Activity が破棄されてしまい、Activity のメンバ変数や onCreate で生成したインスタンス等が再度生成されてしまうため、このような問題が発生します。 今回はこの問題を解決する、以前の WebView の画面を保持したまま画面を回転させる方法 を説明したいと思います。 目次 AndroidManifest.xml MainActivity.java WebView を画面回転(Portrait / Landscape)に対応する AndroidManifest.xml マニフェストの activity に configChanges… の1行を加えます。 MainActivity.java アクティビティに onSaveInstanceState と onRestoreInstanceState メソッドを追加し、onCreate で WebView を生成、savedInstanceState に以前の状態が保存されていれば、WebView を復元する条件を追加します。 以上で、MainActivity が破棄されるタイミングで onSaveInstanceState がコールされ、WebView の状態が保存されます。 MainActivity のコードは以下のようになります。 Android Studio のエミュレータ上で、デバイスを回転させて結果を確認したい場合は こちら を参考にしてください。 まとめ 今回説明した内容は Activity が破棄されたタイミングで、ビューの状態を保存しているので、ここら辺の Android 特有の仕組みをしっかりと理解していれば、色々と応用がききそうです。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: WebView をスワイプで進む・戻るを実装する(iOS 8 以降)

表題そのままですが、iOS 8 で登場した WebKit Framework を使えば、GestureRcoganizer を使用しなくても、スワイプで WebView を進む(戻る)が実装出来ます。 WebView をスワイプで進む・戻るを実装する(iOS 8 以降) WebKit Framework をインポートし、以下の1行を追加するだけです。 self.webview.allowsBackForwardNavigationGestures = true まとめ WebKit Framework を使えば、WebView を使用するアプリが簡単にコーディングできるメソッドが色々登場しています。WebKit Framework の詳細はまた別の機会に記事にしたいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Apple: 新しい iPhone(iPhone 6S ?)の予想される情報の一覧

9月9日(日本時間では9月10日未明)に新しい iPhone が発表されます。 昨年発売された iPhone 6 が過去最高に売れてしまったため、次の iPhone の情報量は少なく、あまり特筆すべき新しさはないものばかりで、ユーザーの関心度がそれほど高くないことが伺えます。 とは言え、現在 iPhone 5S 以前の機種をお使いの方にとっては気になる iPhone であることに変わりはありません。 今回は、9月9日に発表されるであろう新しい iPhone に関する確証の高い情報から、個人的な予想までを一覧化しました。 [2015.09.11 更新] イベント後の答え合わせをおこないました。 新しい iPhone(iPhone 6S ?)の予想される情報の一覧 確証が高いと思われる順に要点だけリスト化しました。予想される仕様の詳細に関しては次項で説明します。 予想される内容結果 iOS 9 発表(+ El Capitan) ◯ iPhone 6S mini は発表しない ◯ 発売日は9月18日(金)-> 9月25日 ✕ A9チップ(トリプルコア) ◯ バッテリー持続時間3時間延長(省電力モード) △ Force Touch 搭載 -> 3D Touch 搭載 △ 4色展開(シルバー・グレー・ゴールド・レッド(ピンクゴールド)) ◯ カメラ強化 1200万画素/500万画素(現行800万画素) ◯ 動画も4K画質での録画に対応 ◯ レンズの出っ張りは解消されない ◯ 本体サイズが変更(+0.2mm厚) ◯ iPad Pro の発表 ◯ iPad mini 4 の発表 ◯ 新しい Apple TV の発表 ◯ ナンバリング廃止 ✕ デュアルカメラレンズ ✕ サファイアガラス -> 特殊な二重イオン交換プロセス強化ガラス ✕ 付属 Lightning ケーブルの USB 端子(ACアダプタ側)が Type-C に? ✕ ※結果の欄は 9月9日の発表後に使用します。 予想される仕様の詳細 iOS 9 発表(+ El Capitan) iOS 9 はすでにアナウンスされていますので、今回の iPhone にあわせてリリースされるでしょう。 iPhone 6 mini は発表しない 昨年より噂されていた iPhone 5 と同じサイズの iPhone mini ですが、発売時期は来年度になるとの情報が濃厚ですので、今回の発表会でお披露目はなさそうです。 発売日は9月18日(金) iPhone 6 のときの発売日から推測される、信頼性の高い iPhone 6S の発売日としては 9月18日(金)とのことです。 [2015.09.11 更新] 発売日は 9月18日 となりました。 A9チップ(トリプルコア) CPU は 1.85GHz、メモリはついに 2GB となるようです。今回の新しい iPhone が発売されると iPhone 4S は最新の iOS のサポートからは外されてしまいまうことになります。 バッテリー持続時間3時間延長(省電力モード) iOS 9 に省電力モードが実装され、A9チップとの相乗効果でバッテリー持続時間が3時間程度伸びるようです。 Force Touch搭載 画面に加わる圧力の強弱を検知する Force Touch が実装されるみたいです。画面をタッチ動作と強く押す(叩く)動作を区別できるようになるため、ユーザビリティの向上が期待できます。慣れるまであまり使われないかもしれませんが。。 [2015.09.11 更新] Force Touch ではなく 3D Touch という名称となりました。 4色展開(シルバー・グレー・ゴールド・レッド(ピンクゴールド)) iPhone 6 の従来の色に加えピンク色が追加されるとのことです。 カメラ強化 1200万画素/500万画素(現行800万画素) iPhone 4S 以来の画素数がアップするみたいです。インカメラのイメージセンサーが変更されるようで、120万画素から500万画素にパワーアップする噂もみられます。 動画も4K画質での録画に対応 メインカメラは4Kムービーの撮影にも対応する模様。ディスプレイ解像度は不明。 レンズの出っ張りは解消されない MacRumors に新しい iPhone の内部パーツが流出しています。 これを見る限り、あのカメラの出っ張りは解消されないと判断できます。Apple がこのデザインを仕様で押し通すとは非常に残念です。 本体サイズが変更(+0.2mm厚) バッテリー容量と本体強度の向上のため、やや本体の高さが厚くなるみたいです。iPhone 6 カバーをつけるとちょうど扱いやすいサイズなので、これ以上薄くする必要はないということでしょうか。 [2015.09.11 更新] 7000 シリーズアルミニウム を使用し本体の剛性が向上したみたいです。 iPad Pro の発表 昨年から噂される iPad Pro ですが、今回の One more thing でついに発表されるのではないかと噂されています。画面は… 続きを読む

HTML: マークダウン記法(Markdown)と HTML の対応表

いまさらですがマークダウン記法が必要になったので、一覧をメモしておきます。 マークダウンに関する詳細説明は割愛して、よく使用するタグを抽出し対応表を作成しました。 マークダウン(Markdown)と HTML の対応表 <XX>text</XX>  MarkdownHTML 見出し(Headers)# text### text<h1>text</h1><h3>text</h3> リスト(Lists)※(空行)* text (or + text or – text)* text (or + text or – text)* text (or + text or – text)(空行)<ul><li>text</li><li>text</li><li>text</li></ul> リスト(Lists)※(空行)1. text2. text3. text(空行)<ol><li>text</li><li>text</li><li>text</li></ol> リンク(Links)[text](url)[text](url “linkTitle”)<a href=”url”>text</a><a href=”url” title=”linkTitle”>text</a> 引用(Blockquates)※(空行)>text(空行)<blockquate>text</blockquate> 強調(Emphasis)_text_*text*<em>text</em> 強調(Emphasis)__text__**text**<strong>text</strong> 打ち消し(Strikethrough)~~text~~<del>text</del> 水平線(Horizontal rules)**** * ******– – –———-<hr> 画像(Images)![text](url)![text](url “imageTitle”) <img src=”url” alt=”text”><img src=”url” alt=”text” title=”imageTitle”> コード(Code)※(空行)```text```(空行)<pre><code>text</code></pre> エスケープ(Escape)\### text<p>### text</p> 改行(Line break)text(半角スペースx2)text(半角スペースx2)text<p>text<br>text<br>text</p> 段落(Paragraph)text(空行)text(空行)text<p>text</p><p>text</p><p>text</p> ※上下に空行がないと正しく表示されません まとめ マークダウンは初めてでも一度書いてしまえばマスターできるくらい分かりやすいものですが、うっかり忘れてしまったとき役に立つと思い記事にしました。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

JavaScript: エスケープシーケンス一覧

本日は手短に JavaScript エスケープシーケンスの自分用メモです。 JavaScript エスケープシーケンス一覧 エスケープシーケンス意味 ¥bバックスペース ¥t水平タブ ¥v垂直タブ ¥n改行 ¥r復帰 ¥f改ページ ¥’シングルクオーテーション ¥”ダブルクオーテーション ¥¥¥文字 ¥0NULL文字 ¥xXX2桁のXX(16進数)が表すLatin-1文字 ¥uXXXX4桁のXXXX(16進数)が表すUnicode文字 ¥ は \(バックスラッシュ)でも大丈夫です。 まとめ Swift ばかり書いていると、エスケープシーケンスのような基本的なことをよく忘れてしまいます。 最近 Node.js の JavaScript を書いていたとき、つい行末にセミコロンを入れ忘れてしまい、間違いに気づくのに数分無駄にしてしまいました(笑) ・・・笑い事じゃありませんね。。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: Core Data についての概要

アプリの設定等の保持するデータが単純で数が限られている場合、Swift: Core Data を使用しないデータの永続化について で説明した NSUserDefaults 等を使用すれば実現可能です。 一方、扱うデータの構造が複雑で、アプリからユーザーの入力した情報を保存したり、任意の条件で入力した情報の検索結果を返したい場合、メモリ等のパフォーマンスを考慮し Core Data を使用することになるかと思います。 今回はこの Core Data についての概要を自分に向けて説明したいと思います。 目次 Core Data とは RDB(リレーショナルデータベース)とは O/R マッピングフレームワークとは Core Data の概要 Core Data とは Core Data とは MVC デザインパターンの Model を担当する Mac OS X や iOS のデータを永続化するための フレームワーク です。 わかりやすく言えば、Core Data とは SQLite へデータの入出力を行う命令や処理がまとめられたもので、iOS (Mac OS X) と SQLite の橋渡しをおこなってくれるものです。 SQL コマンドがわからなくても、Objecive-C や Swift でオブジェクトを扱うようにデータを渡せば、SQLite にデータが保存され、SQLite のデータをオブジェクトとして処理することができるようになります。 他にも iOS (Mac OS X) から SQLite にデータの受け渡しをおこなう方法としては、 Objective-C の Wrapper ライブラリ FMDB を使用する方法があります。 また最近では SQLite 以外に、iOS や Android 等のモバイル環境に特化したデータベース Realm が注目されてますが、今回は Core data の説明なので、Realm については別の機会に記事にしたいと思います。 RDB(リレーショナルデータベース)とは SQLite 等のデータベースのデータの中身は Excel のセルような構造になっていて、テーブルと呼びます。これは Swift でいうところのクラスに該当します。また、テーブルで構成されたデータの実体はレコードと呼ばれます。 Swift や Objecive-C であつかうクラスやオブジェクトの概念は、オブジェクト技術(オブジェクト指向)と呼ばれていますが、データベースの定義やテーブルやレコードでデータ構造を定義し、データの保存・抽出をおこなう技術を リレーショナル技術 と呼び、リレーショナル技術により構築されたデータベースを RDB(リレーショナル・データベース) と言います。 O/R マッピングフレームワークとは オブジェクト技術 と リレーショナル技術 はどちらも データを扱うための技術 です。なぜこのように2つの技術が分かれているのかは、それぞれが扱うデータがどこに存在するかで理解することができます。 アプリで実行されるオブジェクトはメモリ上のデータであるのに対し、RDB のテーブルやレコードはストレージ上のデータそのものを指します。 アプリでデータを永続化するには、HDD や SDD といったストレージへデータを保存する必要があります。そこで Swift や Objecive-C から RDB へデータを受け渡しをする Core Data が必要となってくるのです。 Core Data はオブジェクト(Object)とリレーショナル(Relational)のデータを置き換える役割を果たすため、O/R マッピングフレームワーク(O/R マッパー) と呼ばれます。 Core Data の概要 ここから具体的に Core Data の中身を見て行きたいと思います。 Core Data のクラスで代表的なものは以下のとおりとなります。 エンティティ データベースのテーブルに相当するものです。 エンティティの実体は XML で Xcode のモデルエディタで定義します。 NSManagedObject データベースのレコードに相当するものです。 エンティティクラス、モデルクラス、テーブルのレコードといったモデルデータ全体の設定を行います。 NSManagedObjectModel エンティティ同士の関連を管理するクラスです。データベースの構造(スキーマ)に相当するもので、属性(フィールド)や関係(表)の関連といったモデルの定義をおこないます。 アプリそのものの根幹となる部分です。 NSManagedObjectContext データベースのクエリに相当するものです。 Core Data では、このオブジェクトを使用しデータの検索・挿入・変更・削除・Undo / Redo といったデータの操作を行います。 NSFetchRequest データの取得を行うときに使用します。1件だけのデータ取得であれば NSFetchRequest を使用すればいいかと思います。 NSFetchedResultsController NSManagedObject オブジェクトを監視するコントローラクラスで、NSFetchRequest からデータの取得を行うときに使用します。 NSManagedObject オブジェクトが挿入・変更・削除された時に NSFetchedResultsControllerDelegate オブジェクトに通知します。 UITableView の indexPath に対応しているため、section や row などのデータにアクセスしやすくなります。 NSPersistentStore データベースの抽象化クラスでデータベースの情報を管理します。 NSPersistentStoreCoodinator NSPersistentStore を管理するクラス。データベースを複数管理する際にも使用します。 NSPersistentStore と NSManagedObjectContext を仲介するクラスで、NSPersistentStore クラスを使い、ファイルの読み書きを行ないます。 Core Data で使用するクラスやオブジェクトを図でまとめると以下のようになります。 まとめ 今回は Core Data の概要とデータベースについてざっくりと説明しました。次回は具体例として Core… 続きを読む

Xcode: UIImageView 表示モード一覧(Xcode 6 Swift 対応)

UIImageView の UIViewContentMode (Scale to Fill や Aspect Fit等) の意味をよく忘れるので、メモしておきます。 UIImageView 表示モード一覧 Scale to Fill 縦横の比率を変え全体表示 Aspect Fit 縦横の比率をそのままに長い辺を基準に全体表示(※空白が発生する可能性あり) Aspect Fill 縦横の比率をそのままに短い辺を基準に全体表示(※空白は発生しない) Redraw Aspect Fillと同じだが、UIImageViewのサイズ変更に追随してリサイズ Center 画像サイズを変えず中央配置 Top 画像サイズを変えず上辺を揃える Bottom 画像サイズを変えず下辺を揃える Left 画像サイズを変えず左辺を揃える Right 画像サイズを変えず右辺を揃える Top Left 画像サイズを変えず上辺・左辺を揃える Top Right 画像サイズを変えず上辺・右辺を揃える Bottom Left 画像サイズを変えず下辺・左辺を揃える Bottom Right 画像サイズを変えず下辺・右辺を揃える まとめ Aspect Fit か Aspect Fill で迷う方が多いと思いますが、これらは Fit(ぴったり合う)、 Fill(満たす)と、素直に英語で判断すればよいと思われます。日本人開発者は損ですよね。。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: Core Data を使用しないデータの永続化について

iOS アプリでデータを永続化させる方法はいくつかあり、Core Data や SQLite 等のデータベースを使用するかどうかで、選択肢は大きく2つに分かれます。 今回は データベースを使用しないデータの永続化 について説明したいと思います。 目次 Core Data 以外でデータの永続化する方法 NSUserDefaults について NSKeyedArchiver について プロパティリストについて Core Data 以外でデータの永続化する方法 主に次の3つが iOS アプリでのデータの永続化に使用されています。 NSUserDefaults NSKeyedArchiver プロパティリスト これらの使い方を個別に説明していきたいと思います。 ファイルパス データは次の何れかの階層へ保存することになります。 永続化を行うのであれば /Documents へファイルの保存を行います。 /Documents アプリがファイルを作成し保存する領域 /Library/Caches アプリが一時的に使用する領域(キャッシュファイル) /tmp 一時ファイルの保存に使用する領域(テンポラリーファイル) 各ファイルパスのコードは以下のようになります。 データを datastore.dat ファイルに保存をおこなうサンプルコードは以下のようになります。 NSKeyedArchiver と プロパティリスト でのデータの保存には、このサンプルコードの path を使用し、ファイルへデータの読み書きを行っていきます。 サンプルコード NSUserDefaults について NSUserDefaults については以前に Objective-C で説明した記事 がありますが、ここでは読み書きを行う部分のコードだけをピックアップして説明します。 書き込み 読み込み NSKeyedArchiver について NSKeyedArchiver はその名の通り、オブジェクトをアーカイブ(シリアライズ)しデータの保存を行います。 アーカイブとはオブジェクトのデータをバイナリ(0と1)に変換し保存されます。 保存されるデータはバイナリファイルなので、高速に読み書きが可能ですが、オブジェクトを常に一つのバイナリとして扱うため、データが大きくなるに連れメモリ使用量やデータ検索の効率が悪くなります。 このことから、NSKeyedArchiver はデータが10件、20件程度の 少量データの保存に適した方法 だと言えます。 書き込み 定義済みの path(datastore.dat) へ保存を行います。 読み込み プロパティリストについて プロパティリストとは プロパティリストは拡張子 .plist というファイルで、その実体は xml です。 xml や json でよく目にする < > や { } などで括られた文字列で構成されており、Max OS X や iOS ではその名の通りプロパティリストとして、アプリの設定が保存されています。 注意点 基本的にプロパティリストに保存を行うデータは NSDictionary 型で行います。 このようにプロパティリストは NSDictionary 型で保存されているため、データを読み込む際は NSDictionary 型の変数を用意する必要があります。 書き込み 読み込み NSDictionary を宣言し、読み込みを行います。 まとめ アプリで使用するデータが設定やスコアのみのアプリであれば、今回説明した方法で十分事足りるかと思います。 ユーザーがアプリからデータを保存したり、保存されたデータを使用しなければならない場合は Core Data を利用する必要があります。 次回からは Core Data でのデータの永続化の方法を説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: iOS アプリに SNS (Twitter, Facebook) 共有ボタンを実装する

Swift でアプリに SNS 共有ボタンを実装したいと思います。 アプリのユーザーがどれだけ SNS 共有機能を使ってくれるかは、アプリ自体の魅力や機能にもよりますが、どんな種類のアプリであれ、実装しておいたほうが好ましい機能ではあります。 今回 SNS 共有は Social フレームワークを使用し実装するので、ボタンのクリックイベントのメソッドに数行のコードを記述するだけで、簡単に Twitter や Facebook で情報を共有することが出来ます。 ■目次 Social.framework のインポート UIButton を配置する Twitter 共有のメソッドを記述する Facebook 共有のメソッドを記述する ■詳細説明 Social.framework のインポート UIViewController に Social フレームワークをインポートします。 ViewController.swift UIButton を配置する UIViewController の viewDidLoad で Twitter と Facebook という名称の UIButton を配置し各ボタンにメソッドを定義します。 ここでは viewDidLoad に直接 UIButton をコードで定義・配置していますが、Storyboard と IBOutlet を使っても構いません。 Twitter 共有のメソッドを記述する ViewController に viewDidLoad 内で twitter ボタンのアクションに指定した onClickTweetButton メソッドを定義します。 Facebook 共有のメソッドを記述する ViewController に viewDidLoad 内で facebook ボタンのアクションに指定した onClickFacebookButton メソッドを定義します。 ViewController 全体のコードは以下のようになります。 ViewController.swift ■結果 アプリをビルドし動作を確認します。 twitter タップ時の共有画面。 facebook タップ時の共有画面。 もし、ボタンをタップしてもデバイスで twitter や facebook のアカウントが設定されていなければ警告が出ます。 ■まとめ 今回のサンプルコードではテキストを SNS 共有しましたが、アプリ内で画像を取得し、画像や URL のリンクテキスト等も共有可能です。 アプリの目的に応じた情報を共有する機能を実装することで、より多くのユーザーにアプリの存在をアピールできるできるのではないでしょうか。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから