3Dプリンタが届いたので試しに印刷してみた

2ヶ月前に注文した3Dプリンタが届いた。
3Dプリンタ(Makerbot Replicator2)を注文した - ありえないなど、ありえない

開封→セットアップ→オブジェクトを印刷、までのフローをNAVERにまとめた。
3Dプリンタが届いたので試しに印刷してみた - NAVER まとめ


完成したオブジェクトの写真からはわからないが、積層途中で角度がかわっている。。これはセットアップ時のプレート調整のミス。次は修正したい。

3Dプリンタはあくまでツール。これを使いこなすのは自分次第。

3Dプリンタを持っている方、興味ある方、こちら↓からんでください〜。
スズキオサム@テック系YouTuber (@s_0samu) | Twitter

Arduinoセットアップ

Arduinoを年末に買ったので触ってみた。その備忘録。

PCの環境は、MacOS 10.7.5。
Arduinoは、http://www.amazon.co.jp/gp/product/B008PQEWIW?ie=UTF8&tag=jissenka-22&linkCode=shr&camp=1207&creative=8411&creativeASIN=B008PQEWIW&qid=1356989042&sr=8-4
参考書籍は、http://www.amazon.co.jp/gp/product/4873114535?ie=UTF8&tag=jissenka-22&linkCode=shr&camp=1207&creative=8411&creativeASIN=4873114535&qid=1356989042&sr=8-9

参考書籍の、P62〜のまんまだが、念のためメモ。

1.Arduino IDEインストール
Arduino - SoftwareからMac用のIDEをダウンロード。
2013/1/1時点、最新ヴァージョンは、1.0.3だった。
ダウンロード後、解凍して、Application配下に置けばインストール完了。

Windowsであれば、ドライバーのインストールが必要らしいが、僕はMacなのでスルー。

2.Arduino IDEの起動と動作確認
ArduinoボードをPCに接続し、Arduino IDEを起動。
(日本語に対応してて驚いた。書籍上では英語表記になっていたのだが、実際のアプリケーションは日本語対応している 2013/1/1現在)

まずシリアルポートを指定する。
「ツール」>「シリアルポート」>「/dev/tty.usbmodemfa131」を選択。
USB接続なので、usb〜を選択。他にもusbが名前につくものは「/dev/cu.usbmodemfa131」があったが、ここでは、ttyを選択。

次にマイコンボードを指定する。
「ツール」>「マイコンボード」>「Arduino uno」を選択。
自分の場合は、Arduino unoなので、それを選択した。自分の使っているモデルを選ぶ。

次に、動作確認だ。
「ファイル」>「スケッチの例」>「1.Basic」>「Blink」をひらく
アップロードボタンを押す。

すると、コンパイル中→書込み中になって、その後、1秒置きにLのLEDが点滅しだした。
できた!

loop関数の中にあるdelayの引数を1000から500に変更して、再度アップロードする。
すると、1秒置きに点滅していたのが、0.5秒置きにかわった。

これがArduinoの"Hello,World!"らしい。
(やっぱり動いたときは、ちょっと興奮した)

3Dプリンタ(Makerbot Replicator2)を注文した

いま巷で話題の3Dプリンタをポチった。PLA樹脂1kgを2つ+送料、合計で$2,453.99だった。84円換算だと、およそ20万円。高いのか安いのか意見は様々あるだろうが、一昔に比べると安くなっているのは事実。

日本の代理店(並行輸入?)では、BRULEがあるが、問い合わせたら在庫がない(つまり注文したらアメリカから輸入)とのことだったので、結局製造元Makerbotから購入した。製造元の方も在庫薄のようで、8週間後の発送とのこと。なので、発送は年明け2月中旬くらいか。待ち遠しいぜ。

3Dプリンタで何を印刷するか。(「印刷」という言葉がいまだにしっくりこない。。)色々アイディアあるが、とりあえずはオリジナルのiPhoneケースがほしい。もちろんヨーダのフィギュアは最初に印刷するつもりだがwもともと3Dプリンタは、"prototyping printer"という呼び名もあり、その名前の通り、製品のプロトタイプ用だ。なので、現在の3Dプリンタ(素材はPLA樹脂orABS樹脂)でなんでもつくれる!という考えは大いなる間違いだ。このあたりは、岩佐さんの記事に詳しい。とはいえ、プロトタイプをつくるコストは一昔に比べて激減している。ものづくり好きにはたまらない。僕自身も色々とトライしてみたい。

モノが到着したら、色々レポする予定。

最後に、、、すでに3Dプリンタ持ってる人、気になってる人、いじりたい人、何かあれば、twitterでお気軽に絡んでいただければと思います。
鈴木治のtwitter

MAKERS 21世紀の産業革命が始まる

MAKERS 21世紀の産業革命が始まる

iPhone5(4インチディスプレイ)かどうかの判定条件

やっぱ自分で試さないとね。
と思い、iPhone5(4インチディスプレイ)の判定条件をかいてみた。

+ (BOOL)is4inchDisplay
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    NSLog(@"mainScreenBoundsSize:%@",NSStringFromCGSize(result));
    CGFloat scale = [UIScreen mainScreen].scale;
    NSLog(@"mainScreenBoundsScale:%f",scale);
    result = CGSizeMake(result.width * scale, result.height * scale);
    NSLog(@"Size x Scale:%@",NSStringFromCGSize(result));
    return (result.height == 1136.0);
}

//////

- (void)hogehoge
{
   NSLog(@"4inch %d",[Util is4inchDisplay]);
}

ログ出力結果。

//iPhone5
mainScreenBoundsSize:{320, 568}
mainScreenBoundsScale:2.000000
Size x Scale:{640, 1136}
4inch 1

//iPhone4
mainScreenBoundsSize:{320, 480}
mainScreenBoundsScale:2.000000
Size x Scale:{640, 960}
4inch 0

//iPod 4gen
mainScreenBoundsSize:{320, 480}
mainScreenBoundsScale:2.000000
Size x Scale:{640, 960}
4inch 0

//iPad 2(※非ユニバーサル)
mainScreenBoundsSize:{320, 480}
mainScreenBoundsScale:1.000000
Size x Scale:{320, 480}
4inch 0

//iPad 1(※非ユニバーサル)
mainScreenBoundsSize:{320, 480}
mainScreenBoundsScale:1.000000
Size x Scale:{320, 480}
4inch 0

参考
4インチのiPhone5(1,136 x 640ピクセル)画面対応: iPhoneアプリ開発備忘録

onRequestPurchaseResponse が呼ばれてonPurchaseStateChangeが呼ばれない件

表題どおり。
はまった。。。

サブスクリプションの実機テスト中に。
実機は、Galaxy S2 (Android OS 2.3.3)。

本来であれば、下記にもあるとおり、onRequestPurchaseResponseは、購入後の処理(購入ステート変更)として扱うべきではないと書いてある。なので、購入後の処理は、onPurchaseStateChangeに書くかと。

なのに、だ。購入後に、呼ばれるはずのonPurchaseStateChangeが呼ばれない。

onRequestPurchaseResponseの説明
This is called when we receive a response code from Market for a RequestPurchase request that we made. This is NOT used for any purchase state changes. All purchase state changes are received in onPurchaseStateChange(PurchaseState, String, int, long). This is used for reporting various errors, or if the user backed out and didn't purchase the item. The possible response codes are: RESULT_OK means that the order was sent successfully to the server. The onPurchaseStateChange() will be invoked later (with a purchase state of PURCHASED or CANCELED) when the order is charged or canceled. This response code can also happen if an order for a Market-managed item was already sent to the server. RESULT_USER_CANCELED means that the user didn't buy the item. RESULT_SERVICE_UNAVAILABLE means that we couldn't connect to the Android Market server (for example if the data connection is down). RESULT_BILLING_UNAVAILABLE means that in-app billing is not supported yet. RESULT_ITEM_UNAVAILABLE means that the item this app offered for sale does not exist (or is not published) in the server-side catalog. RESULT_ERROR is used for any other errors (such as a server error).

onPurchaseStateChangeの説明
This is the callback that is invoked when an item is purchased, refunded, or canceled. It is the callback invoked in response to calling BillingService.requestPurchase(String). It may also be invoked asynchronously when a purchase is made on another device (if the purchase was for a Market-managed item), or if the purchase was refunded, or the charge was canceled. This handles the UI update. The database update is handled in ResponseHandler.purchaseResponse(Context, PurchaseState, String, String, long).

すでに10回くらい試しているが、呼ばれるときと呼ばれないときがある。

どうすればいいんだよ、Googleよ。

追記。
タイトルのような事象はかえられないので、下記記事を参考にして、対処することにした。
android - onPurchaseStateChange not getting called - Stack Overflow

エラー「このバージョンのアプリは、google playを通じたお支払いはご利用になれません。詳しくはヘルプセンターをご覧ください。」

Android端末Galaxy S2 (Android OS 2.3.3)にて
サブスクリプションの実機テストをしようとしたら、Google Play画面にて、
アプリケーションエラー「このバージョンのアプリは、google playを通じたお支払いはご利用になれません。詳しくはヘルプセンターをご覧ください。」
と表示され、定期購入アイテムを購入できずにアプリに戻された。

前はできたのに。。。
解決方法がわからん。。。

ちなみに、apkは、ちゃんとリリース版で署名している。

試したもの
マニフェストのversionCodeとversionNameをあげた
Google Playコンソールにて該当するアプリを非公開→公開に
・端末再起動
・端末初期化(出荷状態にもどす)
Google Playコンソールにて、新しく定期購入アイテムを追加

常に購入済み+キャンセル済みの月額課金アイテムを購入しようとすると、
「この定期購入は既に所有しています」と表示され、
GooglePlayコンソールにて、登録していないアイテムIDのアイテムを購入しようとすると、
「アイテムは見つかりませんでした」と表示される。


結局、
追加バージョンでGooglePlayにapkをアップロードし、2時間くらい待ったら解決した。
いままでと同じ条件で試してみたら、正しくGooglePlayの定期購入画面(「同意して定期購入する」ボタン等が表示されている画面)が表示された。
うーぬ。原因が結局わからんぞ。。。

MacでAction Script開発環境構築(rascutも)

備忘録。
環境は、MacOS 10.7.5にて。

1.Flex SDKのダウンロード
http://www.adobe.com/devnet/flex/flex-sdk-download-all.htmlからflex_sdk_4.6.zipをダウンロードしたのち、解凍し、/Library/Flex/flex_sdk_4.6 という風に適当に配置する。

2./Library/Flex/flex_sdk_4.6/bin(mxmlcコマンド等)環境変数PATHを通す

3.rascutをインストール
$ sudo gem install rascut --include-dependencies

4.テスト
$ mkdir ~/FlexWork

//---------------
package {
import flash.display.*;
import flash.text.*;

//HelloWorld
public class HelloWorld extends Sprite {
public function HelloWorld() {
var textField:TextField=new TextField();
textField.text="Hello World!!!!";
addChild(textField);
}
}
}

//---------------
エディタで上記貼り付けて「HelloWorld.as」として保存。
~/FlexWork/HellowWorld.as


$cd ~/FlexWork
$rascut -s HelloWorld.as
で、rascut 起動。

んで、
http://0.0.0.0:3001/
にジャンプ。

Hello World!!!!」と表示されれば成功。

以上。

参照
TextMate+Flex 3 SDK+rascutで作るMac OS XのActionScript開発環境 - builder by ZDNet Japan