オープンデータとプログラミング

iPhone

Swift|変数の定義letとvarの違い

swift

Swiftでは変数を定義するときのキーワードに、letvarがあります。letvarには次のような違いがあります。

キーワード 意味
let 一度定義した変数の内容を変更しない let hogestring=”変更不可”
var 一度定義した変数の内容を変更できる var hogestring=”変更可”

varだけあれば、用は足りると思われるかもしれません。

letが用意されている理由のひとつは、「ソースコードが読みやすくなるから」でしょう。

letで定義された変数は、「変更されないんだな」と一目でわかりますよね。

iOS 8.3 脱獄 で使える50のアプリ

jailbreaking

TaiGによるiOS 8.3の脱獄アプリ、Cydia Substrateがアップデートされましたね。

脱獄によってどのようなことが可能になるのでしょうか。

脱獄アプリはたくさんあるわけですが、その中から面白いものをピックアップした動画がありましたのでご紹介しておきましょう。

この動画で紹介されているアプリは次のとおりです。

ちょっと試してみたくなりますね。

Swift| AdMob組み込み時のエラー「Type “ViewController” does not confirm to protocol ‘GADBannerViewDelegate’」の対処方法

Xcode

こんにちは。

Type “ViewController” does not confirm to protocol ‘GADBannerViewDelegate’

import UIKit
import GoogleMobileAds

class ViewController: UIViewController {

	<中略>

	override func viewDidLoad() {
		<中略>

	        //AdMob
        	var bannerView: GADBannerView = GADBannerView();
        	bannerView = GADBannerView(adSize:kGADAdSizeBanner);
        	bannerView.adUnitID = "ca-app-pub-****************/**********";   //広告ユニットID
        	bannerView.delegate = self; //delegatを指定 ※ここでビルドエラー発生
        	bannerView.rootViewController = self;
        	self.view.addSubview(bannerView);
        	bannerView.loadRequest(GADRequest());
        	
        	
	}	
	
}

この問題は、ViewControllerクラスにプロトコルを指定するのを忘れているため発生します。

プロトコル、”GADBannerViewDelegate”を追加してやります。

class ViewController: UIViewController ,GADBannerViewDelegate { //※プロトコルを指定すればOK

	<中略>

	override func viewDidLoad() {
		<中略>

	        //AdMob
        	var bannerView: GADBannerView = GADBannerView();
        	bannerView = GADBannerView(adSize:kGADAdSizeBanner);
        	bannerView.adUnitID = "ca-app-pub-****************/**********";   //広告ユニットID
        	bannerView.delegate = self; //delegatを指定 ※ビルドエラーが解消!
        	bannerView.rootViewController = self;
        	self.view.addSubview(bannerView);
        	bannerView.loadRequest(GADRequest());
        	
        	
	}	
	
}

これでビルドエラーが解決しましたか?

iPhone 4S ユーザーを歓喜! 古いデバイスに最適化される iOS 9

普通なら、アップルからの新しいOSのリリースは歓迎する理由になるだろう。
しかし、あなたが最新のハードウェアを所有していなければ、かならずしも歓迎できるとは限らない。
アップルは、最新OSよりかなり遅れて複数OSの最新版(具体的にはiOS 4、iOS 7とiOS 8)をリリースしてきた。

この問題が常に以前のハードウェアで最も深刻な間、アップルの最新版方針は初期のOSに戻すことを不可能ではなくとも困難にするようになっている。

新機能の提供よりは、むしろ厳しくバグ修正とパフォーマンス向上を実現することに、iOS9が集中してきたと各メディアは報じている。

iOS9がiPhone4Sのような古いデバイスのために最適化されると主張することによって、
iOS9のパフォーマンス向上が際立つのだ。

iOS 9以前では、アップルの開発モデルは、最新のハード上にOSを搭載することになっていて、古い製品で動かない少数の特徴を取り除き、全てを完了したと言うことになっていた。アップルの新しいアプローチは、新機能を古いハードでテストして、最適化した後にだけ新機能を搭載するやり方になっているのだ。

OS発展がゼロサム・ゲームでなければならないことは誤解だ。そこに、より新しいハードがテーブルの上に残されるならば、古いハードは支持されるのだ。
たしかに、これは特定のケースで起こることがありえる:
10年以上経つPCのためにWindows XP互換性とセキュリティ・バグ修正の全ての範囲をもたらそうとすることは、間違いなくマイクロソフトの頭痛だった。

しかし、それはiOS界の現実を本当に反映しません、そこでアップルはちょうどサポートする少数の製品を備えています、そして、最も遅いものはデュアルコア・プロセッサー、メモリ量とよくよく理解されているハードとソフト機能だけを提供する。

iPhone 4Sが古くなる間、iPhone 4Sに対するサポートのニュースはiPhone 5と5cのためにも実を結ばなければならない。そして、それはかなりよりのニュースだ。

アプリを起動する際のパフォーマンス低下があるのでiOS 8を避ける人も多い。
また、UIも変わってしまう。— iOS 9がiPhone 5cの上でiOS 7と同程度のパフォーマンスをだしてくれることを望んでいる人も多いはずだ。

新OS(9to5MacはGalaというコードネームであると報告している)は、アップルの新しいサンフランシスコ書体を採用して、iMacに分割スクリーン・アプリ一覧を提供して、大量輸送機関方向をアップルMapsに加えることになっている。
伝えられるところでは、アップルはRootlessであると言われる「特徴」も加えている。
そして、それは管理者レベル・ユーザーさえ特定の保護されたファイルにアクセスすることができない。
これは信頼された実行ハードウェアを強いられた保安のプラットホームに広がる採用またはソフトウェア努力の更なる進化でありえました、しかし、管理者アカウントからさえ特定のファイルを締め出すことは脱獄者のために問題を含むことがありえました。

アップルは伝えられるところではiCloudを押す努力も進めていて、同期しているより多くのアプリケーションとコンテンツのためのバックエンドとして、そのシステムも使用する。

Swiftと「セイフティなWiFi」のような主要な特徴については、9to5の完全なレポートをチェックしてほしい。

アップルが誤ってリーク ?iPhone 6 cリリースか

iphone6c

この写真は何だかわかりますか?
iPhone 5cのように見えるかもしれません。
しかし、よーく見てください、そして、中央で四角い模様なしのTouch IDボタンが見えますよね。これは・・・iPhone 6c?なのか。

アップルの公式サイトの新製品ライトニングドックの説明ページ上に誤って(故意に?)掲出された写真だそうです。その後、削除されたそうですがネットでは噂が飛び交っています。

アップルもiPhoneのラインアップの活性化をしなければならないので、iPhone 6cのリリースもあり得ない話ではないですね。

家族で格安SIMならBIC SIM(ビックシム)がお得!

SIMフリースマホ市場には、たくさんのMVNO事業者が参入しています。
そのため、どのMVNO事業者が一番お得なのかが分りにくい状況になっています。
基本的な価格はどのMVNO事業者も大差がありませんしね。

ビックカメラの格安SIM、BIC SIM(ビックシム)のは特徴は、なんといっても使い方で選べる3種類のプランです。月間のデータ容量(3G、5G、10G)や価格といった基本的なスペックは、他のMVNO各社と大きな差はありません。しかし、BIC SIMには他社にはない大きな特徴があります。BIC SIMには、家族構成によっては、たいへんお得になる場合があるのです。

ではBIC SIM(ビックシム)の選択ポイントを見てみましょう。

ファミリーシェアプランがお得

ビックカメラの「ファミリーシェアプラン」は10GBの大容量を家族3人でシェアできるのです。このプランがどれだけお得なのかを計算してみましょう。例えば、「データ通信 音声通話機能付き」のプランだと、月額料金は家族3人で3,260円~です。つまり、1人当たりの金額はわずか約1,080円(3,260円÷3)、データ量は一人当たり、なんと3.3GBになります。3GBの「ミニマムスタートプラン」が月額1,600円~ですから、いかにお得かがご理解いただけるでしょう。家族3人がSIMフリースマホに切り替えればかなり節約できるはずです。

さらにさらに、これにデータ量を繰り越せる機能がつきます。

データ量を翌月にくりこせる

スマホをあまり使わなかったときは、契約しているデータ量を使いきれないことがあります。くりこしができないサービスの場合では、使いきれなかったデータ量は月がかわれば消えてしまい、翌月にくりこすことはできません。つまり、使いきれなかったデータ量は無題になってしまうわけです。しかし、ビックカメラのBIC SIMでは、使いきれなかったデータ量は翌月に繰り越すことができます。例えば、10GB/月の契約をしていたとしましょう。4月のデータ使用量が9GBだったとすると、使用しなかった1GBは5月にくりこされ5月は11GB/月まで使用することができるのです。

家族3人で繰り越しができるので、どれだけお得か理解していただけると思います。

私の場合は、家族の中で私だけが格安SIMなのですが、
全員格安SIMに変更できれば間違いなくBIC SIM(ビックシム)を選択します。

BIC SIM(ビックシム)はアマゾンでも・・・

楽天でも・・・・

IIJ BIC SIM音声通話パック ※返品・交換不可

IIJ BIC SIM音声通話パック ※返品・交換不可
価格:3,229円(税込、送料別)

購入できるので便利ですね。

Xcode|Swift|@IBOutletのビックリマーク(!)の意味は!?

Xcode

こんにちは。

ストーリーボードで、コントロールと紐付けをしてあげると以下のようなコードが自動的に挿入されます。

変数の最後(行末)に感嘆符(!)が付いていますが、これはいったい何者でしょうか?

@IBOutlet var yourAge:UITextField! 

これは、yourAgeOptional型だということを意味しています。

つまり、yourAgeは、『空(nil)を許容しますよ』ということです。

もう少し詳しく知りたい方は、Optional型、アンラップ(unwrap)などのキーワードで検索してみてくださいね。

Xcode:didReceiveMemoryWarning() メソッドとは?

Xcode

didReceiveMemoryWarning() メソッドは、警告を受け取ったときに呼ばれるメソッドです。

画像ファイルなど、使用している大きなメモリ領域を解放します。

メモリ警告を無視するとアプリが異常終了する場合があります。

iOSシミュレーターにも、メモリ警告のシミュレート機能が備わっているので、テスト時に確認しておくと安心ですね。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

didReceiveMemoryWarning() メソッドについては、以下の本に詳しく書かれています。

より詳しく勉強してみたい方は読んでみてはいかがでしょうか。

Xcode:nibファイルって何よ?

Xcode

nibファイルは『ニブファイル』と読みます。
iOSアプリの開発がはじめての方が、理解しにくいnibファイルについて解説します。

概要

nibファイルとは、簡単にいってしまうとボタンなどのUI要素の描画情報が記述されたファイルのことです。

iOSアプリの開発作業は、「プログラムコードの記述」と「UIの作成」の二つに大別できます。通常は「UIの作成」はInterface Builder(IB)※を使用してUIを作成する作業を行います。このIBで作成されたUI要素の描画情報がnibファイルに格納されます。

※以前はXcodeとは独立したアプリでしたが、現在ではXCodeに統合されています

名前の由来

拡張子は.nibです。この拡張子が呼び名の由来です。
nibはNeXTStep Interface Builderの頭文字からとったものです。

ストーリーボードファイルとの関係

UI要素の描画情報はストーリーボードファイル(Storybordファイル)に格納されているのでは?と思うかもしれません。実は、ストーリーボードファイル(Storybordファイル)の正体は、複数のnibファイルを一つにまとめたものです。

ViewControllerとの関係

アプリ(ViewController)が起動されるときに、nibファイルからUI要素の描画情報が読み込まれ、インスタンス化され、起動直後の画面が描画されます。

ViewController.swiftviewDidLoad()メソッドには、

Do any additional setup after loading the view, typically from a nib.

とコメントが記載されています。

「ボタンなどのUI要素がnibファイルからロードされ、インスタンス化されたらあとは
 あなたが設定等を自由に記述してくださいね」、

ということです。

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

viewDidLoad()の中でプログラムを記述することによって、UI要素の色を変えたり、ボタンを追加したりすることができるわけですね。

nibファイルについては、以下の本に詳しく書かれています。

より詳しく勉強してみたい方は読んでみてはいかがでしょうか。