ITのこと

H4S Lab.

Swift 配列 Array

書式

var 配列名 = [値1, 値2, 値3]
var 配列名:[値の型] = [値1, 値2, 値3] // 型指定
var 配列名:Array<値の型> = [値1, 値2, 値3] // 関数の定義などで使う型指定

// 多次元配列
var 配列名 = [値A[値1, 値2, 値3], 値B[値1, 値2, 値3] ] 

空の配列

指定した型で初期化される

var strArray = [String]()

// 配列が空かチェック
if strArray.isEmpty {
    // 空の配列
} else {

}

配列の値の個数

count

var intArray = [10, 20, 30, 40]
intArray.count // 結果:4

配列を同じ値で初期化

repeatedValue

var zeroList = [Double](count:3, repeatedValue:0.0)
// 結果:[0.0, 0.0, 0.0]

配列に値を追加・挿入・削除

append
insert
removeAtIndex, removeLast, removeAll

var intArray = [10, 20, 30]

// 追加
intArray.append(40) // 結果:[10, 20, 30, 40]

// 挿入
intArray.insert(25, atIndex: 2) // 結果:[10, 20, 25, 30, 40]

// 指定した位置の値を削除
intArray.removeAtIndex(2) // 結果:[10, 20, 30, 40]

// 最後の値を削除
intArray.removeLast() // 結果:[10, 20, 30]

// 全てを削除
intArray.removeAll(keepCapacity: false) // 結果:0 elements ※引数省略はfalse

配列の値にアクセス

インデックスは0から
レンジ演算子で連続した範囲へのアクセスもできる

var intArray = [10, 20, 30]

// インデックスでアクセス
var int1 = intArray[0] // 結果:10
var newArray = intArray[0...1] // 結果 [10, 20]

// 代入
intArray[0] = 11 // 結果:[11, 20, 30]
intArray[1...2] = [22, 33] // 結果:[11, 22, 33]

// コピー(代入は参照では無く複製される)
var newArray2 = intArray // 結果:[11, 20, 30]

// 多次元配列へアクセス
var nestArray = [[10 ,20, 30], [40 ,50, 60], [70 ,80, 90]]
var int2 = nestArray[0][0] // 結果:10

// インデックス番号と値を取り出す
for (index, value) in enumerate(intArray) {
    println((index, value)) // 結果:(0, 11) (1, 20)  (2, 30)
}

// 最初の値を取り出す
intArray.first

// 最後の値を取り出す
intArray.last

配列の値をあつかう

// 配列と配列を連結
var strArray1 = ["aaa", "bbb"]
var strArray2 = strArray1 + ["ccc", "ddd"]

// 値を逆順に並べる
intArray.reverse()

// 値をソートする
intArray.sort {$0<$1} // 昇順
intArray.sort {$0>$1} // 降順

// ストリングをabc順にする
strArray.sorted {
    $0.uppercaseString < $1.uppercaseString // 大文字に変換して比較
}

// 値を抽出する
var filterArray = intArray.filter {$0 >= 30 && $0 <= 40} // 30以上40未満の値

// すべての値で演算を行う
var plusOnes = intArray.map {$0+1} // すべての値に1を足す

参考書籍

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

Swift ストリング String

書式

let str = "文字列"
var str:String
str = "文字列"
var c:Character = "c"

特殊文字

特殊文字 内容
\0 ヌル(nil)
\ バックスラッシュ
\t タブ
\n 改行
\r キャリッジリターン
\" ダブルクォーテーション
\' シングルクォーテーション
\xnn ユニコード(1バイト)
\unnnn ユニコード(2バイト)
\Unnnnnnnn ユニコード(4バイト)

macでバックスラッシュ入力はoption+¥キー

ストリングの文字数

countElements()

let str = "あいうえお"
var num = countElements(str)

ストリングに変数や式を含める

\(変数)

let int = 100
let str = "あいう\(int)えお"

ストリングの比較

==

let str = "あいうえお"
if (str == "あいうえお") {
}

※大文字小文字を区別せずに比較する場合は、lowercaseStringプロパティで小文字に変換する

ストリングを数値に変換する

toInt()!メソッドを使う

let str:String = "123"
let int = str.toInt()!

ストリングを浮動小数点に変換する

NSStringにキャストしてfloatValueプロパティ

let r = 120
let pai = "3.14"
let ensyu:Float = Float(2*r) * (pai as NSString).floatValue

数値をストリングに変換する

description

let f = 100.5
let str = "aaa" + f.description

ストリングに含まれる文字列の範囲を取り出す

rangeOfString()

let str = "abcdefg"
let word = "cd"
let range:Range? = str.rangeOfString(word)
if let theRange = range {
    let start:String.Index = theRange.startIndex
    let end:String.Index = theRange.endIndex
}

任意の文字位置から文字列を取り出す

advance

let str = "abcdefg"
let start = advance(str.startIndex, 4)
let end = advance(start, 2)
let pickupStr = str[start..<end]
}

NSString に変換して文字列を取り出す

substringToIndex
substringFromIndex
substringWithRange

let str = "abcdefg"
let toIndex = (str as NSString).substringToIndex(2) // 結果:"ab"
let fromIndex = (str as NSString).substringFromIndex(3) // 結果:"defg"
let range:NSRange = NSMakeRange(3, 2) // loc:3, len:2
let withRange = (str as NSString).substringWithRange(range) // 結果:"de"
}

※文字列の置き換え stringByReplacingCharactersInRange()メソッド

ストリングを検索する

find()

let str = "abcdefg"
let idx = find(str, "cd") // 見つかった位置のString.Index 見つからない場合はnil

ストリングの接頭辞と接尾辞

hasPrefix()
hasSufffix()

let itemList = ["aaa111", "bbb222", "ccc333"]

for item in itemList {
    // aaaではじまる
    if item.hasPrefix("aaa") {
    
    }
    // 222でおわる
    if item.hasSuffix("222") {
        
    }
}

ストリングに文字を追加、挿入、削除

appendString()
insertString()

var str:NSMutableString = "aaa"
// 追加
str.appendString("bbb") // 結果:aaabbb
// 挿入
str.insertString("ccc", atIndex: 3) // 結果:aaacccbbb
// 削除
let delRange = NSMakeRange(6, 3)
str.deleteCharactersInRange(delRange) // 結果:aaaccc

参考書籍

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

Swift 基本シンタックス

定数と変数

型推論が導入されている。

書式

// 定数
let 定数名 =let 定数名:型 =// 変数
var 変数名 =var 変数名:型 =

タプル

複数の値を1個の値として扱えるようにする。

書式

(値1, 値2, ・・・)
(ラベル:値1, ラベル:値2, ・・・) //ラベル付き

var user = ("山田", 35, true)
var user:(String, Int, Bool) = ("山田", 35, true)  // 型指定

// ラベル付き
var user = (name:"山田", age:35, isPass:true) 
var user = (name:String, age:Int, isPass:Bool) = ("山田", 35, true) 

値を取り出す

// インデックス番号でアクセス
let name = user.0
let age = user.1
let isPass = user.2

// ラベルでアクセス
let name = user.name
let age = user.age
let isPass = user.isPass

演算子

演算 記号
算術演算子 +, -, *, /, %
インクリメント, デクリメント ++, --
論理演算子 &&, ||, !
比較演算子 >, <, >=, <=, ==, !=
オブジェクトの比較 ===, !==
代入演算子 =
複合代入演算子 +=, -=, *=, /=, %=, &&=, ||=
三項演算子 条件式 ? trueの場合の式 : falseの場合の式
レンジ演算子 始値..<終了値, 開始値...終了値
ビット演算子 <<, >>, &, |, ^, ~

条件分岐

if 文

if (条件式) {
    ステートメントA
}

if (条件式1) {
    ステートメントA
} else if (条件式2) {
    ステートメントB
} else {
    ステートメントC
}

switch 文

switch 式 {
    case1:
        ステートメントA // swiftではbreakしなくても以降の処理を実行しない
        fallthrough // これを書けばフォールスルーで以降を実行する
    case2:
        ステートメントB
    case3, 値4, 値5:
        ステートメントC
    default:
        ステートメントD
}

ループ処理

// 指定範囲から順に値を取り出す for-in ループ
for 変数 in 開始値 ..< 最終値 {
    ステートメント
}

// コレクションの値を順に取り出す for-in ループ
for 変数 in コレクション {
    ステートメント
}

let numList = [4,2,7,8,9]
var sum = 0
for num in numList {
    sum += sum
}

// カウンタを数えて繰り返す for ループ
for (カウンタの初期化; 条件
; カウントアップまたはダウン) {
    ステートメント
}

for (var i=sizelist.count ; i>0; i--) {
    let size = sizelist[i-1]
}

// 繰り返し while ループ
while (ループ条件) {
    ステートメント
}

// 繰り返し do-while ループ
do {
    ステートメント
} while (ループ条件) 

// 現在の繰り返しの残りの処理をスキップする
continue

// 繰り返しを中断する(ループを中断する)
break

// ループにラベルを付ける
xloop:for x in 0...5 {
    yloop:for y in 0...5 {
        if (x>y) {
            continue xloop // yloopを中断してxloopに抜ける
        }
    }
}

xloop:for x in 0...5 {
    yloop:for y in 0...5 {
        if (x>y) {
            break xloop // yloopだけでなくxloopも中断する
        }
    }
}

参考書籍

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

詳細!Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応

Markdown 記法

Markdown 記法(はてな

見出し

# h1
## h2
### h3

リスト

- リスト
    - 子
        - 孫

数字リスト

数字は増やさなくても良い

1. リスト
2. リスト
3. リスト

ソースコード

```
ソースコード
```

指定無し|左寄せ|中央寄せ|右寄せ
-|:-|:-:|-:
100|200|300|400

水平線

---

改行

行末に半角スペースを2つ

段落

1段落

2段落

太字

**テキストabc**

イタリック

_テキストabc_

引用

> 引用分
>> 入れ子の引用文

リンク

[リンクテキスト](URL)

Sublime Text 2 メモ

  • ALT+M でプレビュー
  • ALTで先頭行を選択して>キーで、複数行まとめて引用にする

インフラ系素人の私がAWS試験合格のためにやった事

AWS 認定 ソリューションアーキテクト– アソシエイトレベルに合格しました!

世の中には、仕事はインフラ系でAWS使ってます的な人がちょこっと勉強して合格したよ情報はたくさんありますがインフラ系の素人がなんとか合格した体験記が少ないような気がしていて今記事を書いています。
スコアは65%以上で合格に対して、74%だったので偉そうな事は言えませんが皆さんのご参考になれば幸いです。

この記事はAWS vol.2 Advent Calendar 2014の24日目です。

私のスペック

AWSどころか、インフラエンジニアでも無いのでApacheとか言われても困る。
基本的には、ネイティブ言語でサバクラ業務アプリを作ったりしてる。

やった事① AWSを知る

何をして良いかもわからなかったので、とりあえずAWSのホームページを眺めました

  • なにはともあれAWSの製品&サービスのページをぼーっとしながら読む

http://aws.amazon.com/jp/products/

  • AWSのスライドを片っぱしから読む(ぼーっとしながら)

http://aws.amazon.com/jp/aws-jp-introduction/

インフラ系の知識が無いため、わからない言葉(ロードバランサーとかもわからなかった・・・)はその都度ググりました。

やった事② みなさんの合格した方法を知る

  • AWS 認定ソリューションアーキテクト – アソシエイト レベル試験に合格する方法

http://dev.classmethod.jp/etc/how-to-get-a-certification-aws-architect-associate-level/

  • AWS認定ソリューションアーキテクトアソシエイトレベルに合格しました

http://drawing-hisa.seesaa.net/article/384974315.html

  • AWS認定ソリューションアーキテクト アソシエイトレベルに独学で合格した勉強法

http://www.lancork.net/2014/07/how-to-pass-aws-solutions-architect-associate/

インフラ屋さんでもAWSを業務で使っているわけでも無い私はこれらの記事を読んで少し心が折れました。

やった事③ 本を読む

基礎知識が足りない分は、体系的にまとめらている本を読むことで補いました。

1冊目:一通り読んでこんなデザインパターンがあるんだなとなんとなく理解し、後半の実例でAWSを使ったサービスをイメージできました。

2冊目:この本にそってAWSのアカウントを作ったりEC2立ち上げたりと手を動かしてみました。

3冊目:もっと手を動かした方が良いと思い実習しました。

やった事④ サンプル問題を解く

  • サンプル問題は少ないですが、全問正解できるまで何回も解きました。正解以外の項目についても詳しく調べて完璧に理解しているという感じです。

http://aws.amazon.com/jp/certification/certified-solutions-architect-associate/

  • アソシエイトのサンプル問題ほど真剣にはやりませんでしたが、合格してみて思った事はアソシエイトレベル以外のサンプル問題も重要だなという事です。ちょっと毛色が違うかもしれませんが一通り解いてみる事をお勧めします!

さいごに

書籍だけだとIAMとかのセキュリティ関係が弱いのでAWSのホームページで補足した方が良いです。
それと、テストを解く上で消去法がオススメです。一見わからなくてもこれは無いなぁたぶんこれで良いかが結構当たってました。
今後、インフラ系素人のデベロッパーこそがAWSを駆使してサービスを発信していけるはずです。
インフラ系素人だからAWSの試験は諦めようと思っている方も、この記事を読んで少しでも勇気を持って貰えると嬉しいです!


インフラ系素人がAWS試験合格のために勉強した事 1日目

AWS 認定 ソリューションアーキテクト– アソシエイトレベル取得のため勉強をはじめてみる。

ここ↓から試験ガイドをダウンロードして、読んでみたが何一つわからない・・・
http://aws.amazon.com/jp/certification/certification-levels/certified-solutions-architect-associate/

受かる気がしない・・・

私のスペック

AWSどころか、インフラエンジニアでも無いのでApacheとか言われても困る。
基本的には、Cで組み込みやったり、Delphiで業務アプリを作ったりしてきた。

勉強1日目

クラスメソッドさんのページ↓を参考にして少しずつ進めてみる。
http://dev.classmethod.jp/etc/how-to-get-a-certification-aws-architect-associate-level/

大きく分類すると下記3点を勉強する。

  1. AWSの知識
  2. IT全般の知識
  3. 試験に出るプロダクト

幅広すぎて涙が出そうになるけどコツコツがんばる・・・

今日は、AWSの知識として以下の対策を行う。

AWS のコンピューティング、ネットワーキング、ストレージ、データベースサービスの実践的な使用経験

クラスメソッドさんによると、

ここから詳細に理解すべきAWSプロダクトを選びました。EC2、VPC、S3、EBS、RDSです。これらのプロダクトに関する理解は実践的である必要がありますので、詳細まで理解する必要があります。

という事なので、EC2、VPC、S3、EBS、RDSのプロダクトを実践的に使えるレベルになるためawsのページを理解できるまで読む!

EC2

まずはEC2を理解する
http://aws.amazon.com/jp/ec2/

わからない言葉だらけで困惑したが、意味を調べながら何度も読み返してみた。
はたしてこれで実践的に使えるレベルになったと言えるのだろうか・・・

汚いけど(字も読みづらいけど)Amazon EC2まとめ↓
f:id:st_h4s:20140420185129j:plain


次回は、VPCを理解しよう!


XE5でandroidエミュレータが起動しない(PANIC: Could not open: rsxe5_android)

環境:Delphi XE5 FireMonkey
XE5に標準搭載されているrsxe5_androidが、PANIC: Could not openエラーで起動しない

f:id:st_h4s:20140403115926p:plain

どうやらパラレルデスクトップを使っているため .android のインストール先が標準と違うようだ・・

コマンドプロンプトシンボリックリンクを作成
  1. 管理者権限でコマンドプロンプトを起動する
  2. 以下のコマンドを実行してパラレルの共有フォルダにリンクを貼る

mklink /d .android \\psf\Home\.android

シンボリックリンクが作成されましたとコマンドプロンプトにでれば成功
※c:[ユーザー]\.android が既に存在する場合は、削除かリネームをする!

無事AVDマネージャからエミュレータが起動しました