Swiftで書いてみよう!

主にSwiftプログラミングのメモを綴ります。

【Win】Windows7でMacのキーボードを使ってIME ON/OFF

Windows上でMacのキーボードを使う際に、IME ON/OFF キーが無くて困ったことになります。 対策として、control+spaceキーでIME ON/OFFを切り替えるようにしました。

以下、Windows7 Pro で設定したときの記録です。

タスクバーの「Microsoft IME」を右クリックして「設定」をクリックします。 「Microsoft IME」を選んで「プロパティ」をクリックします。 f:id:aquatown2001:20171009102600p:plain

「編集操作」タブを開き「ユーザー定義」の「変更」ボタンをクリックします。 f:id:aquatown2001:20171009102711p:plain

「キー設定」タブに「Ctrl+SPACE」を追加して「IME-オン/オフ」を追加します。 f:id:aquatown2001:20171009102824p:plain

「OK」をクリックして閉じます。 すると「control+space」キーでIMEをON/OFFできるようになります。

【Mac】Wine を使って WatchtowerLibrary 2016 をインストールした時の記録

Mac OS X YOSEMITE と Sierra 上に Wine 2.0.2 を使って Watchtower Library 2016 をインストールした際の記録です。 2017/9/29現在の記録ですので、今後大いに変わる可能性があります。 2018/4/1 EI Capitanにインストールしました。その際の内容に更新しています。

最初に XQuartz をインストール

以下にアクセスします。
https://www.xquartz.org

以下のファイルをダウンロードします。
XQuartz-2.7.11.dmg

ダウンロードが完了したら、ダウンロードフォルダを開きます。
XQuartz-2.7.11.dmg をダブルクリックします。
XQuartx.pkg をダブルクリックしてインストールします。

次に Wine をインストール

以下にアクセスします。
https://www.winehq.org

Downloadリンクをクリックします。
WineHQ Binary Packagesから以下の macOS 用を選んでクリックします。
macOS - WineHQ binary packages for macOS 10.8 and higher

以下からインストーラを取得します。
Installing:
Both .pkg files and tarball archives are available at https://dl.winehq.org/wine-builds/macosx/download.html.

以下を選びます。
Installer for "Wine Stable"

ダウンロードが完了したら、ダウンロードフォルダを開きます。
winehq-stable-3.0.pkg をダブルクリックしてインストールします。

続いて Watchtower Libraryのインストール

WatchTower Library 2016 のDVDをセットします。
LaunchPad から Wine Stable を実行します。
以下のコマンドを打ち込んで、カレントフォルダを移動します。

cd /Volumes/WTLIB16J

以下のコマンドを打ち込んで、インストーラを起動します。

wine WTLSetup.exe

「wine-monoパッケージを見つけられませんでした」が出たら「インストール」をクリックします。
Geckoパッケージを見つけられませんでした」が出たら「インストール」をクリックします。

「紹介の手紙」で「次へ」をクリックします。
「同意する」をクリックします。
「インストール」をクリックします。
「完了」をクリックします。

フォントが化ける問題の解消方法

USBメモリにWindowsPCのフォントフォルダからWatchtower Libraryが使うと思われるフォント(2〜5程度?)のファイルをコピーします。 フォントファイルの入ったUSBメモリMacに接続したら、ファインダーを開きます。 Shift + Command + G を押して開いたダイアログの中に以下のパスを指定してフォントのフォルダを開きます。

~/.wine/drive_c/windows/fonts/

コピーしてきたフォントファイルを上記フォルダにペーストします。

Watchtower Libraryの起動方法

Launchpad から Wine Stable を実行します。 以下のコマンドを打ち込むと WatchTower Library が起動します。

cd .wine/drive_c/Program¥ files¥Watchtower¥Watchtower¥ Library¥J
wine WTLibrary.exe

インストール作業は以上で完了です。

長いパスを打ち込まずに済ませるために、シェルスクリプトを作る方法

Launchpad から Wine Stable を実行します。 以下のコマンドを打ち込んで、エディタ vi を使ってスクリプトファイルを作ります。

vi wt.sh

viが開いたら「i」を打ち込んでインサートモードに切り替えます。 以下のスクリプトを打ち込みます。

#!/bin/sh
wine .wine/drive_c/Program¥ files/Watchtower/Watchtower¥ Library/J/WTLibrary.exe

入力し終わったら「ESC」を押します。 Shift+ZZ で保存します。

以下のコマンドでファイルの実行権限を変更します。

chmod 755 wt.sh

すると、以下のコマンドでWatchTowerLibraryを開けるようになります。

sh wt.sh

以上です。

【Swift】ループ処理

同じ処理を繰り返すループの記述方法です。

// for文を使ってループします。
// ※ループ変数に宣言varは不要です。
// 1から3までループします。
// 最終値を含む場合「...」と記述します。
for a in 1...3 {
    println("\(a),")
}

// 1から4未満までループします。
// 最終値を含まない場合「..<」と記述します。
for b in 1..<4 {
    println("\(b),")
}

// ループ変数がループ処理内で不要の場合はアンダースコアを利用できます。
// 1から3までループします。
var c = 0
for _ in 1...3 {
    c++
    println("\(c),")
}

// 昔ながらの指定方法(初期値;条件;増分)です。
// この場合はループ変数に宣言varが必要です。
for (var d=1; d<4 ; d++) {
    println("\(d),")
}

// while文を使ってループします。
// ループ進入時に条件判断が実行されますので,
// 一度もループに入らない処理を記述できます。
var e = 1
while (e<4) {
    println("\(e++),")
}

// do-while文を使ってループします。
// ループ脱出時に条件判断が実行されますので,
// 必ず一度ループに入る処理を記述できます。
var f = 1
do {
    println("\(f++),")
} while (f<4)

【Swift】インクリメントとディクリメント

変数に1を足すことをインクリメント、1を引くことをディクリメントといいます。プラスまたはマイナス記号を二つ重ねて記述します。変数名の前に記述すると、そのステートメントを実行する前に、インクリメントまたはディクリメントが処理されます。

インクリメントの例
var year = 2015         //yearに2015が代入されます
//yearがインクリメントされ2016になります。2016がnextyearに代入されます。
var nextyear = ++year   
ディクリメントの例
var nextyear = 2016     //nextyearに2016が代入されます。
//nextyearから1マイナスされ2015になります。2015がthisyearに代入されます。
var thisyear = --nextyear

ポストインクリメントとポストディクリメント

変数名の後にプラスまたはマイナス記号を重ねて記述すると、そのステートメントを実行した後に、1を加算または1を減算が処理されます。これをポストインクリメント、ポストディクリメントと呼びます。

ポストインクリメントの例
var year = 2015         //yearに2015が代入されます
//yearの値2015がthisyearに代入されます。その後yearが1プラスされ2016になります。
var thisyear = year++
var nextyear = year     //yearの値2016がnextyearに代入されます。
ポストディクリメントの例
var year = 2016         //yearに2016が代入されます。
//yearの値2016がnextyearに代入されます。その後yearが1マイナスされ2015になります。
var nextyear = year--
var thisyear = year     //yearの値2015がthisyearに代入されます。

【Swift】演算子前後のスペースについて

演算子(=,+,-,*,/)の前後のスペースは入れても入れなくてもOKですが、どちらか一方だけにスペースがある場合エラーとなります。

var a : Int = 1     //「=」の前後両方にスペースがあるためOK
var b : Int=2       //「=」の前後両方にスペースがないためOK
var c : Int =3      //「=」の前だけにスペースがあるためエラー
var d : Int= 4      //「=」の後だけにスペースがあるためエラー

【Swift】円周率、対数、平方根の定義について

円周率、自然対数、2のルートなどは定数として定義されています。 以下の定数名で利用できます。

M_PI           // π 3.141592・・・
M_E            // e 2.718281・・・
M_SQRT2        // sqrt(2) 1.4142135・・・

【Swift】タプルの使い方

タプルは複数の値をまとめて扱うための機能です。内部の値には0から始まるインデックス番号またはラベルでアクセスします。

// 三つの整数値を持つタプル bgcolor を定義します。
var bgcolor:(Int, Int, Int)
bgcolor = (10, 20, 30)  // 三つの値を格納します。
println(bgcolor.0)      // インデックス番号を使って先頭の値10を取り出します。

// タプルを定義しそれぞれに red,green,blue というラベルを付けます。
var forecolor:(red:Int, green:Int, blue:Int)
forecolor = (16, 32, 64)
println(forecolor.green)    // ラベルを使って32を取り出します。
println(forecolor.1)        // インデックス番号で32を取り出します。

// メンバーを格納するタプルを定義します。
var member:(姓:String, 名:String, 年齢:Int, 性別:String)
member = ("Smith", "Mike", 14, "男")
println(member.年齢)      // 年齢の値14を取り出します。
var age = member.年齢     // 年齢を変数ageに格納します。

識別子にはUnicode文字を利用できますので、変数名として日本語文字を使用できます。しかし処理系によって濁点の扱いに問題があったり、アルファベットの全角と半角の見分けが付きにくいなどの問題があるため利用には注意が必要です。