連載目次
前回は「iPhoneアプリはどうやって動いているのか」「プログラムとは一体何なのか」といった、iPhoneアプリを作るために必要な基礎知識について解説しました。iPhoneアプリをどうやって作ればいいのか、大まかなイメージをつかむことができたと思います。
また前回の記事の中では、iPhoneアプリを開発するにはMac(マック)が必要であること、そして開発用アプリケーションであるXcode(エックスコード)をインストールする必要があることを説明しました。しかし「iPhoneは普段使っているけど、Macは触ったことがない」という読者の方も多いと思います。
そこで今回はプログラミングを学び始める前に、まずはMacの基本的な使い方を学んでいきましょう。さらにXcodeをインストールし、起動してみるところまでやってみましょう。
「Mac」とひと言で言っても、さまざまなモデル(種類)があります。その中で今回の記事では「MacBook Air(マックブック エアー)」というモデルを対象とします。アップルが現在販売しているノートパソコンの中で一番安価で、多くの人が利用しているメジャーなモデルです。また、OSのバージョンはOS X Yosemite(オーエステン ヨセミテ) 10.10.2(Yosemiteはバージョンごとの愛称)を対象としています。OSについては前回の記事を参考にしてください。
MacBook Air
もしあなたが持っているパソコンがMacBook Airではない場合、もしくはOSのバージョンが異なる場合、今回の記事で解説する手順や使い方が少し違う可能性があるので注意してください。正しい手順で進めているはずなのに記事に書いてある通りに進められないときは、MacやiPhoneアプリ開発に詳しい知り合いやApple Storeなどに相談してみるといいかもしれません。
また、XcodeをMacにインストールするにはインターネットに接続できる環境が必要です。最近は多くの家庭でインターネットに接続する環境が整っていると思いますが、もしインターネットに接続する環境がない場合はインターネット接続サービスを契約する必要があります。
3月10日に開催されたアップルのイベントで、「新しいMacBook」が発表されました。MacBook Airよりも薄型・軽量のモデルで、画面には「Retina(レティナ)」ディスプレーと呼ばれる高精細なディスプレーが搭載されています。
MacBook
とても魅力的なモデルですが、現状ではiPhoneアプリ開発にはあまり向いていません。その一番の理由は、MacBookだけでは充電しながらiPhoneを接続することができないためです。充電しながらiPhoneを接続したい場合、アクセサリも一緒に購入する必要があります。もしiPhoneアプリ開発用に新しいMacBookを購入しようと思っている場合は、アクセサリも必要になるということを覚えておきましょう。
さて、手元にMacは準備できていますか? もしこの記事をMacを使って読んでいるなら、一歩進んでいますね! Macは初期設定が終われば(※)、すぐに使い始めることができます。
※Macを購入後初めて起動したとき、使う前にいくつかの初期設定を行う必要があります。その手順については本記事では割愛します。購入したMacに付属している「クイックスタートガイド」を参考に、設定を行っておきましょう。
まずはMacの画面の構成について覚えましょう。Macの画面は、次のような機能で構成されています。どのアプリケーションでも使う基本的な機能なので、それぞれどんな役割があるか覚えておきましょう。
Macの画面の構成
画面の上部に表示されている領域です。アップルメニュー(Macの電源をオフにしたり、再起動などが行えるメニュー)やアプリケーションメニュー(現在使用しているアプリケーションを操作するメニュー)といった、Macのいろいろな操作を行うメニューなどが表示されています。
メニューバー
アプリケーションメニューに表示されている、一番左側の太字で表示されている文字が、現在開いているアプリケーションの名前です。現在どのアプリケーションを開いているか分からなくなったときは、このアプリケーションメニューを見て確認するようにしましょう。
起動しているアプリケーションの画面です。アプリケーションの操作は基本的にこのウインドウの中で行います。Macでは複数のアプリケーションを起動できるため、複数のアプリケーションを開いている場合は複数のウインドウが画面上に重なって表示されます。また、1つのアプリケーションで複数のウインドウが表示されることもあります。
Macの画面に表示されているメニューやボタンをクリックする場所を表す矢印です。トラックパッド(MacBook Airのキーボードの下にあるパッド)またはマウスで操作します。
Macに入っているさまざまなアプリケーションを簡単に開くことができる場所です。アイコンが並んで表示されていて、アイコンをクリックするだけでアプリケーションを起動することができます。表示されているアプリケーションは、自分で追加したり削除したりすることもできます。
Copyright © ITmedia, Inc. All Rights Reserved.
PREVIEW ';
}else{
mask.innerHTML = '
';
}
if((_preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){
img.style.visibility = 'visible';
}else{
nxt.parentNode.insertBefore(mask,nxt);
}
}
}
};
/**
* mask_leadin : subscription マスクの実行
* @param {Object} マスク用パラメータ(sc,lc,ac,bc)と記事の状態(subscription_exist,subscription_objects,preview)を持った Object
*/
function mask_leadin(_p){
if(!_p.subscription_exist) return false;
addCSS('/css/spv/cmsInput.niche.css?date=202407081140');
let d = document;
let description = createElementWithAttribute('div',{"class":"colBoxDescription"},function(div){
div.appendChild(createElementWithAttribute('p','',function(p){
p.innerText = '続きを読むには、[続きを読む] ボタンを押して会員登録あるいはログインしてください。';
}));
});
let button = {};
if(_p.preview){
button.link = 'javascript:void(0)';
button.text = '続きを読む(TestMode)';
button.func = 'if(window.confirm(¥'マスクを解除しますか?¥')){location.href = ¥'#maskoff¥';location.reload();}else{return false;}';
} else {
button.link = 'https://id.itmedia.co.jp/isentry/contents?sc=' + _p.sc + '&lc=' + _p.lc + '&ac=' + _p.ac + '&cr=' + _p.cr + '&bc=' + _p.bc + '&return_url=' + encodeURIComponent(d.URL) + '&pnp=1&encoding=shiftjis';
button.text = '続きを読む';
button.func = 'cx_itm_mask_button();';
}
button.elem = createElementWithAttribute('div',{"class":"colBoxButton"},function(div){
div.appendChild(createElementWithAttribute('a',{"href":button.link,"onclick":button.func},function(a){
a.innerText = button.text;
}));
});
let mask = createElementWithAttribute('div',{"class":"mask_leadin"},function(div){
div.innerHTML = '
';
});
mask.querySelector('.colBoxIndex').appendChild(description);
mask.querySelector('.colBoxIndex').appendChild(button.elem);
let subscription = _p.subscription_objects[0];
subscription.classList.add( 'is-' + _p.subscription_type );
if((_p.preview && location.hash.indexOf('maskoff') !== -1) || (typeof itmIdLogin !== 'undefined' && itmIdLogin == 1)){
subscription.style.display = 'block';
}else{
subscription.parentNode.insertBefore(mask,subscription);
}
};
/*IMAGE MASK & Lead-in*/
(function(d){
let membersControl = searchMembersControl(); // %メンバー用マスクの存在チェックと対象要素取得
let imageMask = searchImageMask(); // 画像マスクの存在チェックと対象要素取得
let subscription = searchSubscription(); // subscription マスクの存在チェックと対象要素取得
let isPreview = d.domain.match(/(preview|broom|localhost)/);
let param ={
isLoginURL:'//status.itmedia.co.jp/isLoginAIT.cgi',
sc:'0c1c43111448b131d65b3b380041de26f2edd6264ee1c371184f54d26ab53365',
lc:'7d7179c146d0d6af4ebd304ab799a718fe949a8dcd660cd6d12fb97915f9ab0a',
ac:'1a599d548ac1cb9a50f16ce3ba121520c8ab7e05d54e097bfa5b82cb5a328a0f',
bc:1,
members_control_exist:membersControl.exist,
image_mask_exist:imageMask.exist,
image_mask_objects:imageMask.Objects,
subscription_exist:subscription.exist,
subscription_objects:subscription.Objects,
subscription_type:subscription.type,
preview:isPreview
};
let setExtraMask = function(){
if (d.getElementById('isLogin') || isPreview) {
// isLogin 呼び出し済みであれば各マスク処理を実行
if (imageMask.exist) {
param.cr = '2c93f81754142e105c8bca17824745d14c8c4d69e9d7ede513e5530546e97641';
mask_images(param);
}
if (subscription.exist) {
param.cr = '90cfa6d666682f8b5dc3c798020e432fc294ef430deb069008d4f8bceeb02418';
mask_leadin(param);
}
} else {
// isLogin がなければ、呼び出した後で再実行
let js = mask_images.setISLOGIN(param.isLoginURL,param.sc);
js.addEventListener('load',function(){
setExtraMask();
});
}
};
if( subscription.type != 'force' ) { //強制 subscription ではない場合のみ実行
if (imageMask.exist || subscription.exist) {
setExtraMask();
}
}
})(document);
';
w.removeEventListener('scroll',arguments.callee,false);
htmlRequest(_xhrfile,_idname);
elem.setAttribute('data-status','true');
console.log('finished : ' + _idname);
}else{
// console.log('retry : ' + _idname);
}
}else{
e_loader.innerHTML = '
';
w.removeEventListener('scroll',arguments.callee,false);
htmlRequest(_xhrfile,_idname);
elem.setAttribute('data-status','true');
console.log('finished : ' + _idname);
}
}
};
w.addEventListener('scroll',scrolling,false); // スクロールイベント
scrolling(); // スクロールイベント(閲覧位置が半端な場合のために 1 回実行させる)
};
w.addEventListener('load',loading,false); // LOAD 後に実装
};