MacBook Airを購入

一週間前にMacBook Air(2010)を注文し、昨日到着しました。本当は銀座のAppleStoreで購入しようかと考えていましたが、メモリを2GB足して4GBにしたかったのでネットのAppleStoreで購入。

買ったのは13インチの128GBモデル。メモリを4GBに変更した以外は標準のままです。目的は、メインのノートPCとして使うことで、外でも使えて、家の中でも使うこと。iPadのかわりのような感覚で購入しました。iMaciPhoneはすでに持っているので、ちょうどその間を埋めてくれる絶妙な製品であると、魅力的に映りました。

本当は「いずれほしい」位に思っていて、来年辺りに買うつもりでした。そんなときに、海外出張の話が舞い込んできまして、海外行くならノートPC位は必須だよね、と。そんな感じで、まだ出張が本決まりでないうちに嫁に許可をとってポチってしまいました。

箱を開けるところからのレポートは今更感があるので省略しますが、ちょっと2日間使ってみた感想でも。

  • ネット見たりするのに性能に不満はなし
  • 評判通り起動時間やスタンバイからの復帰が超早い。iPad感覚か
  • 寝転がりながらの使用は快適とは言い難いかも
  • 128GBで意外とやっていけそう。Xcodeを含め諸ソフトを入れても30GB程度の使用量
  • iPhoneのバックアップや同期は、容量的に不安なのでしたくない
  • キーボードもトラックパッドも操作性に不満なし。iMacを使っているかのよう
  • iMacなどと比べ画面の質がよくない。視野角なども広くないし、長時間使うと疲れる
  • FaceTimeなどを使うとものすごい勢いで電池がなくなる。仕方ないことだが。

画面が見にくいことがほぼ唯一の不満点。もともと液晶画面が嫌いでブラウン管TVやCRTモニタを貫いてきて、決してノートPCなんて使ってこなかった人なので、このへんの許容範囲は普通の人より狭いと思います。

Linuxを使ってみて

iMacVirtualBoxを入れてUbuntuを動かしています。オープンソースとかよくわかっていませんでしたが、これ使っているとスーパーハカーになれそうな錯覚を起こしそうです。Windowsフリーソフトのような文化と違って、結構ソースコードが公開されていたりするんですね。

Ubuntuインストール直後にGoogle日本語入力Ubuntu版みたいなのを入れてみましたが、戸惑いまくりです。ソースコードをチェックアウトしてビルドしたりとか、いったいなんていうことをさせてくれるんでしょう。Windowsばかり使っていると馴染みがないので結構面食らいました。

コア部分のプログラミングなどはC言語が活発という印象です。いままでWindowsCEでC使っていましたが、Linuxで触るほうがいろいろと得るものが大きそう。なんていうか、C言語好きな人が、C言語好きな人にために作った環境という印象でしょうか。gccなんかも標準で入っていて、スクリプトを記述する感覚でCのプログラムを書いたりできる雰囲気に見えます。
viをサクサクと使えるようになりたいな。viは6年以上前に半年ほど業務で使っていましたが、ほとんど忘れてしまっている模様。

まだまだ触り始めなのでよくわかっていませんが、C言語好きの私には結構合っていそうな印象。

ちなみに10年ほど前にTurboLinuxをインストールしたことが有りますが、よくわからずに使うの諦めた思い出があります。今回オモシロイと思ったのはUbuntuが素晴らしいからなのか、C言語を使えるようになったからなのか。

#こんな感じで勉強になるという理由を盾に、今度から嫁に対して新マシンの購入交渉がしやすくなりそう

C++使いがObjective-Cに触れてみて思ったこと

※2019/12/16追記: 当時の理解不足で少しオーバーな表現や誤りが含まれていたのでその部分だけ修正しました

私は普段はC++で開発をしています。そんな私がObjective-C(Foundation)を数日間勉強してみて思ったことを書いてみます。C++使いに読みやすいように、Objective-C用語もあえてC++っぽく呼んでいたりします。

印象

初めてObjective-Cのコードを見たときに全く理解できずたじろぎました。関数(メソッド)の定義と呼び出し方がC++などとは全然違っていて初めて見る形式だったからです。
しかし勉強を始めてみて数時間でその不安は吹っ飛びました。むしろC++からC#に移るよりも楽なんじゃないかと思うぐらいです。メソッドの定義と呼び出し方が分かればあとはそんなに難しくないはずです。

C++やCと何が違うのか

ペースはC言語で、C言語の記述がそのまま使えます。その上でObjective-C特有の部分は@や[]で区別されたところに記述します。Foundationなどの機能を呼び出したい時にObjective-C特有の記述をします。Objective-C特有の記述で特徴的なのはメンバ関数の定義方法と呼び出し方法。
具体的に書くと以下のように違います。

[C++]

class CMyClass {
    int GetInformation();
};

void work()
{
    CMyClass* myObject = new CMyClass;
    int information = myObject->GetInformation();
    delete myObject;
}


[Objective-C]

@interface MyClass : NSObject {
}
- (int) getInformation;
@end

void work()
{
    MyClass *myObject = [[MyClass alloc] init];
    int information = [myObject getInformation];
    [myObject release];    // ※2019/12/16追記: ARC利用時は手動のreleaseは不要です
}


C++と呼び出し方は違いますが、全く違うことをやっているわけではないのがわかると思います。

違うのは記述方法だけでなくてメンバ関数が呼び出されるメカニズムもです。C++だとコンパイル時に飛び先のアドレスが解決されますが、Objective-Cだと実行時に解決します。そのまま使うと関数呼び出しのオーバーヘッドが大きいので注意。詳しくないけどセレクタを使った回避策もあるらしい。細かくて回数が莫大なループ内で呼び出す要な場合は回避したほうがいいかもしれません。iOSアプリ開発においては無視できる程度のオーバーヘッドであることが大半です(2019/12/16追記)
基本的な考え方はC++と同じです。おまけにメンバ変数にアクセスするためのメンバ関数(GetterやSetter)を自動生成してくれちゃう機能まであり、C++よりも便利な記述が言語的に備わっています。クリティカルセクションの制御なんかも言語レベルでサポートされています。

フレームワークについて

Objective-CMacOSXiOSのアプリをつくるのに主に使用されています。そしてそのターゲット用にCocoa(iOS用はCocoa touch)というフレームワークがあり、Objective-Cプログラミングではそれを使います。Windowsでいう.NET Frameworkのようなものに当たるでしょうか。
コーディングに密接に絡んでくるのがFoundationと呼ばれるもので、C言語で言う標準関数のようなものがここにある感じです。この中のNSObjectっていうクラスがかなり重要でObjective-Cプログラミングの要。インスタンスの確保・開放などはこのクラスに実装されている機能を使うことになります。
私はいまこのあたりの使い方とiOSのUI用のクラス(UIButtonなど)の勉強中です。

総括

言語の違いは大した障害とならない感触です。純粋に新しいフレームワークの使い方を覚えていくことに比重を置くことになると思います。

WindowsからMacに移行して思ったこと

iMacを購入しメインマシンがMacになりましたが、予備知識が全くなく何をして良いのかもわからない状態でした。
マイコンピュータどこ?」みたいな状態。

まず初めにしたほうがいいのはAppleのサイトにある動画を見ること。
Macの基本的な使い方とか、MagicMouse, MagicTrackpadの使い方などが分かりやすく解説されていて、Windowsからの乗換組には重宝する内容です。
全然知りませんでしたが、普通のマウスやタッチパッドと操作が全然違います。何も知らずに使うと使いにくいデバイスかと思ってしまいますが、使い方を知ると非常に使い勝手が良いことが分かります。
ひとまず、Finderがマイコンピュータみたいなものということが分かればあまり苦労はしないかなと思います。

次に戸惑ったのはショートカットキーなどの違いです。日本語入力する方法やCtrl+Cなどはどのようにすればよいのか。
メニューから調べてみても変なアイコンが乗っているだけで全くわかりません。一番はまりやすいところで、上矢印のアイコンがShiftだとわかるまでが大変でした。WindowsでいうCtrlの代わりがほとんどcommandなのですが、command+shit+何か、というショートカットがMac独特かと思います。
日本語入力はWindowsみたいにトグルになっていなくて、「かな」と「英数」でそれぞれ切り替え。これもなれるまでちょっと違和感あります。
XcodeのショートカットはVisualStudioと全く違うので結構もどかしいかもしれません。これは忘備録として別記事でまとめたいです。

あとはWindowsで使っていたソフトなどの対応はどんな具合かが気になりました。私は下記のように代用しています。

あとはWindowとMac両方に提供されているソフトはそのまま入れています。

正直メインで使うのはこのへんなのでほとんどWindows使うのと変わらない感覚で使えます。

Mac購入以来、もう家ではMacしか使っていません。もともとあったWindowsXPマシンはほとんど嫁専用と化しています。

Macでよく使うショートカットキーまとめ

表示系のショートカットの一部が最新と違っていましたので修正しました(2019/12/16)
かなり古い記事でXcodeのショートカットが最新と違っていましたので修正しました(2017/09/03)


私がよく使うショートカットキーをまとめました。Windowsからの乗り換えの人にも分かりやすくWindowsでのショートカットキーも併記しました。


編集系

キー 効果 Windowsでのキー
command + a 全選択 Ctrl + a
command + c コピー Ctrl + c
command + v 貼りつけ Ctrl + v
command + x カット Ctrl + x
command + z undo Ctrl + z
shift + command + z redo Ctrl + y
command + s 保存 Ctrl + s
command + ← カーソルを先頭に移動 home
command + → カーソルを末尾に移動 end


表示系

キー 効果 Windowsでのキー
command + ← 戻る alt + ←
command + → 進む alt + →
command + r 更新 F5


Xcode

キー 効果 Visual C++でのキー
command +r デバッグ実行 F5
command + b ビルド F7
command + \ (command + ¥) ブレークポイント設置・解除 F9
command + F6 ステップ実行(関数に入らない) F10
command + F7 ステップ実行(関数に入る) F11
command + F8 ステップ実行(関数から出る) shift + F11
control + command + y 続行 F5


ショートカットキーはメニューからも確認できますが、アイコン表示になっていて分かりにくいです。
ルート記号のようなもの = option
太い白抜きの上矢印のようなもの = shift
四つ葉のクローバーみたいなもの = command

初めてのMac購入

Windows95発売の頃に初めてのPCを買った時からずっとPC/AT互換機を使ってきました。
そんな私が何を血迷ったかiMacを購入。

昔のMacと違い今MacIntelのCPUを使っていて、PC/AT互換機とほぼ同じです。
そのため、スペック表を見て比べることができます。
Windowsのパソコンを選ぶかのように選択できます。

購入にあたり、まず検討したのがどのMacにするかということ。
ノートにするのかデスクトップにするのか。
デスクトップならMac mini, iMac, Mac Proが、ノートならMac Book, Mac Book Air, Mac Book Proがあります。

いまのメインPCがPentiumDと前時代のものなので、新しいマシンにはメインとして最新に匹敵するスペックを求めました。。
そのため、ノート系は却下。
コストパフォーマンスを考えてiMacの一番安いのに決定しました。
Proはさすがに高すぎますし、miniでもディスプレイから揃えると決して安く有りません。

使ってみたところとくに不便を感じることもなく快適。
ただ、HDDが500GBなのでそれが少し足りない気がします。