2012年12月31日月曜日

プログラミングの初期学習にはドットインストールが良さげ

学習について書いて思い出したので、別記事にして記載します。

以前、洗い物をするときに動画で勉強できないかなーと探していた時に思い出して見てみました。


例えば、iOSアプリの講座だとこんな感じです。



あくまで、初心者向け。
というか未経験者向けのレベルではあるのですが、すごく良いサービスだと思いました。

■動画の力はすごい
 動画はとてもわかりやすいです。
メッセンジャーで文章で会話していた時代には、ボイスチャットは恥ずかしいだろと思っていたものの、skypeが普及してきて声に出す/聞くというコミュニケーションの快適さに改めて気づいた。そんな感覚です。
 1講座2、3分というちょうど良い短さなのでダレにくいです。

■未経験者目線
 プログラミングだと教科書でも変数の概念や四則演算とかから入って、ファイルの読み書き、配列、メソッド、オブジェクト思考とかそんな順に習う訳ですが、ドットインストールの場合、とにかく作ることにフォーカスしているように見えます。
 必要があってこれからガッツリ学ぶ人には前者のような学習で良いかと思いますが、ちょっと作ってみたい。というような人にはとても良い方針だと思います。

※微妙な所
基本的なとこをだけなので、動画を見ただけで何かを作れるわけではありません。そこから興味が出て、知りたくなったところを書籍などで調べて機能を作っていくのが良いでしょう。
サイトの立ち位置もそういうところを目指しているのだと思います。

delegateとdatasource

delegate:ボタン押したよーとかイベントを処理するメソッドを指定

datasource:テーブルの列の数どうしよか?とかを処理するメソッドを指定


とりあえずアプリ作るという目的で作ってたけど、基本的なところを今知りました。
delegateは知ってたけどdatasourceはそういうものだとは知りませんでした。

体系的な勉強って大事。
でもプログラミングに関してはだるいんですよね。

とりあえず書く→気になったらリファレンス→体系的な勉強
の順で7割くらい既知の方が楽しくやれる気がします。

今のうちは無知でどんどん書きたいと思います。

2012年12月26日水曜日

旧式iMac(2010 Mid)再生計画 ②疑似FusionDrive導入により管理自動化


旧式iMac(2010 Mid)再生計画 ①SSDをのせて高速 に引き続き、我が家のiMac(2010 Mid:2歳)をカスタマイズしていきます。

失敗に備えてバックアップは必ず取っておいてください。

お決まりなので、作業は自己責任でどうぞ。と書いておきます。
自分のPC操作するのに人に責任があるわけが無いのですが、それはさておき。

前回高速なSSDを投入して、iMacさんのディスクは下記の状態にあります。

HDD:1TB SSD:256GB

これを下記のようにします。

FusionDrive(HDD+SSD):1.2TB

前者だと、自分でこれは余り使わないのでHDD、よく使うのでSSDという調整をしなければいけないのですが、それを自動化することが目的です。



【作業手順】

0.事前準備:HDDとSSD以外からのOS起動準備:外付けHDDからMacを起動
① HDDとSSDのフォーマット
② FusionDriveの設定
③ OSのインストール


0.事前準備:外付けHDDからMacを起動

①のフォーマットにいきたいところですが、現状ではHDDからMacを起動しているので、HDDをフォーマットすることができません。

起動時にF8とかF9とか連打したらディスクはフォーマット出来たりするのかもと思いましたが、軽くググった感じでは見つけられませんでした。

②のFusionDriveの設定時にターミナルを使うので、外付けHDDからの起動が無難と判断しました。なお、外付けHDDではなく、USBメモリでもCDでもDVDでもかまいません。

外付けHDDから起動するためにはUniBeastを使用します。
UniBeastについては下記を参照ください。


簡単には下記の通りです。
1. OSをAppStoreダウンロード
2. USB(私の場合は外付けHDD)をマスターブートレコードでフォーマット。
3. UniBeast起動→USB(私の場合は外付けHDD)にインストール
4. USB(私の場合は外付けHDD)をさしたまま再起動
※起動ディスクの優先順位がデフォルトでは外付けになっていますが、変更をしている場合には変更が必要です。



① HDDとSSDのフォーマット

外付けHDDからMacを起動した状態で、HDDとSSDを共にフォーマットします。
なお、ディスクをフォーマットしますので、確実にTimeMachineでバックアップを取っておいてください。

ディスクユーティリティ
→ディスクの選択
→パーティションタブ
→オプション→GUIDパーティションテーブル
フォーマット:Mac OS 拡張(ジャーナリング)
でHDD、SSDを共にフォーマットします。



② 疑似FusionDriveの設定

ターミナルアプリを開いて、driveの設定をします。
コマンドは下記の通りです。

$ diskutil list
SSDのディスク名(disk0とか)
HDDのディスク名(disk1とか)
を確認します。
例:
0: GUID_partition_scheme *256.1 GB disk0
0: GUID_partition_scheme *1.0 TB disk1


$ diskutil corestorage create "新ボリューム名" ディスク名1 ディスク名2
コアストレージ機能により、ディスクを一体化します。
ここで下記の様なUUIDが表示されますので、保存しておいてください。
Core Storage LV UUID: A299V9942-5436-62546-52688-4938A0D9305

$ diskutil corestorage createVolume "LVGのUUID" jhfs+ "新パーティション名" 100%
全てを1つのパーティションを割り当てます。

$ diskutil list
ディスクの状態確認をします。
ディスク名1及びディスク名2の項目に2: Apple_CoreStorage という項目が増えていることが確認出来るハズです。



③ OSのインストール

AppStoreから既にダウンロードしてあるOSを②にて作成したパーティションにインストールします。
外付けHDDを抜いて、内蔵ディスクから起動の上、TimeMachineからバックアップをリストアします。


2012年12月25日火曜日

旧式iMac(2010 Mid)再生計画 ①SSDをのせて高速化

新型iMacの魅力に打ち勝つため、我が家のiMacさん(2010 mid)にSSDを導入することにしました。

これまでSSD導入を見送っていた理由は下記の通りでしたが、共にクリア?出来ました。


①新iMacのFusionDriveを狙っていた。
→ MBP欲しくなって買っちゃった。予算なし。てか旧式iMacでもFusionDriveが実現出来るらしい。

②分解怖い。(ググると難易度高いとか書いてあるし。)
→ そうは言っても付け替えるだけだし、いけるでしょ。という気分。



という訳で、本記事でSSDへの換装、次に疑似FusionDriveの作成記事を書きます。



※(一応)Fusion Driveとは
HDDとSSDを1つのボリュームに見せてくれる機能です。
大容量のHDDと、読み書きの早いSSDが1つのドライブに見えます。
内部的によく使うファイルはSSDに、そうでないファイルはHDDと言った動きをMacが自動でやってくれるので、使う側からすると読み書きが早くて大容量なドライブが使えるようになります。
フルSSDと一緒かと言うとそれはフルSSDのが早いに決まってますが、内部的な動きの詳細が公開されている訳ではないので、その辺りの比較はしておりません。




■購入したもの
値段は大体です。

・SSD
Crucial m4 CT256M4SSD2 ¥16,000
動作確認がとれている機種の用なので、これを選びました。
今から買われれば問題ない場合が多いと思いますが、ファームウェアのバージョンによっては不具合があるらしく、ファームウェアのバージョンアップが必要出そうです。
私の場合は必要ないバージョンでした。
Crucial 2.5インチ 内蔵型 SATA3.0対応 M4 SSDシリーズ 256GB CT256M4SSD2
Crucial 2.5インチ 内蔵型 SATA3.0対応 M4 SSDシリーズ 256GB CT256M4SSD2


・トルクドライバーのT8 ¥800
T10と記載されているブログなどもありますが、T8のみで可能でした。
アネックス(ANEX) ヘクスローブドライバーT型 T8×60 No.6300
アネックス(ANEX) ヘクスローブドライバーT型 T8×60 No.6300


・ダストブロワー ¥600
ディスプレイをあけるので、掃除してから戻した方がよいです。

ELECOM ダストブロワー ECO AD-ECOMW
ELECOM ダストブロワー ECO AD-ECOMW


・マウントベイ SlimBay9.5SA-HDD.SA ¥3,000
SSDをマウントするためのキットです。9.5と12.7がありますが、9.5できっちり入ります。
12.7を入れた人のレポートは見つからなかったです。
↓下記の店舗で購入。(通販はメールで受け付けているようです。)
http://www.toeimusen.co.jp/~th/category/bayAccessory.html

・開けるようの吸盤 100×2
ディスプレイをあけます。

・DVDケース  ¥1500
SuperDriveを取り出しますので再利用するために使います。
スリム光学ドライブケース(SATA) DC-SS/U2
スリム光学ドライブケース(SATA) DC-SS/U2


2012年12月12日水曜日

gitの基本的な使い方。書いたコードを外出先でも使う方法

MacbookPro 13 retina、ゴリゴリ下がる値段を見守りつつも、待ちきれずに意を決して買いました。

これで私も立派なノマド()です!

今までiMacで書いたコードを外出先でMBPと共有したいなーと思いました。

やっぱりgithubかな。
コードも人に見せられるほどでもないし公開するのはなー。

でも先々考えるとバージョン管理もあるし。

ということでgitを使ってみることにしました。

リポジトリを作って、後はファイルを追加。簡単でした。

具体的にかいていきます。
任意のディレクトリを作成して、helloファイルを作ってからリポジトリ初期化

$ mkdir gittest
$ cd gittest/
$ touch hello

$ ls
hello

$ git init

この状態でgitのステータスを確認すると、helloファイルが入ってないよ。と怒られてしまいます。

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# hello
nothing added to commit but untracked files present (use "git add" to track)


指示通り、ファイルをgitに読み込みます。ここではカレントディレクトリ配下を指定していますが、ファイルを指定しても良いです。
$ git add .

コミットします。
aオプションで変更ファイルを検出コミット、mオプションでコメントがかけます。
$ git commit -a -m "first commit"


バージョン管理という意味では、ブランチを作るのが一般的(たぶん)のようで

$ git checkout -b branch1


存在するブランチと今使ってるブランチを確認出来る。
$ git branch -a

* branch1
  master


この状態でbranchFileを作成してコミットしても

$ touch branchFile

$ ls
branchFile hello
$ git add ./

$ git commit -a -m "branch"
[branch1 28c1f72] branch
 0 files changed
 create mode 100644 branchFile

別のブランチには影響してませんよ。


$ git checkout master

$ ls
hello


ということですね。

では、張り切ってgithub!!

と思ったけど、外出先で使いたいだけならdropboxでいいじゃん。
gitをちゃんと使ったのはそれはそれで役に断つのでよしとしよう。

2012年12月4日火曜日

禁オナかオナ禁か

ググってみると、以外とオナ禁が優勢かも知れない。

禁オナの方が禁止してる感があると思ったのですが、変更も検討したいとおもいます。 

広告を入れてみる。

無料アプリであれば、広告を入れられるようにはしておきたいところです。

色々なブログを見ていると、広告収入は雀の涙と聞きますが、手段として持っておくにこしたことはありません。

手段としてはiAd、AdMobが代表的です。

iAdで表示→取得できない時はAdMobから表示
という典型的な方法は既に完成されているようで、各所でソースがありました。

参考にしたのは下記です。



でAdMobを入れる上で、上記のサイトに記載があるもの以外で困ったことを何点かメモ

・frameworkが足りない
上記に加えてStoreKit.frameworkやAdSupport.frameworkを入れました。
入れていないとエラーが出てきます。

・読み込みエラー
AdMobのディレクトリをそのまま放り込んだので、リンクエラーが発生していました。
Google analysticsのディレクトリを参照から外すことで解消

・コンパイルエラー
.aファイルを読み込む時には下記の設定が必要だそうです。
TARGETS → Build Settings →  Other Linker Flags → 
 Any Architecture|Any SDK -ObjC -all_load

ソースも流し読みのコピペですが、とりあえず動きました。

またゆっくり読みます。

2012年12月1日土曜日

禁○タイマー使用例

禁○タイマーが公開されたので、使用例を紹介させてください。

タイトルが禁オナタイマーになってしまっているので、ごにょごにょ
このタイマーは禁オナ、禁酒、禁煙など何かをやめるときに、禁止を継続している時間を測定します。


使用例:禁オナタイマー
①初期設定
初期設定画面で、テキスト入力項目に『オナ』と記入し、確定ボタンを押します。

②設定は完了です。禁オナを開始する決意が出来たら真ん中のスイッチボタンを押してください。

カウントアップが開始されます。

タブを選択すると、自己ベストと、現在の称号、効果が見られます。
換算は下記の通りです。
時間換算:1日2時間
通貨換算:1日1.5円換算
匹換算:1日1億匹換算

以上です。

禁オナタイマー、公開しました。

禁○タイマーがめでたくiTunesStoreに公開されました。
禁○タイマーに改名したつもりが、タイトルが禁オナタイマーのままになってました。

アプリ名は禁○タイマーで表示されますが、iTunesStoreでは禁オナタイマーになっています。