Scheme の処理系として Mac に Gauche をインストールしてみた。
brew コマンド一発で入った。
$ brew install gauche
Gauche の実行コマンドは gosh。ちょっとハマった。
$ gosh gosh>
あとがき
社内で SICP (計算機プログラムの構造と解釈) の勉強会をしてみようという話になったので、とりあえず Scheme の処理系をインストール。SICP 本を読むのは初めて。う〜ん、どうなるか楽しみ。
2013-08-28 (水)、iPhone アプリ「いこーよ ロコミ・思い出」アプリのバージョン 1.0.1 をリリースした。
1.0 のリリースが 2013-08-22 なので、一週間もしないうちに次のバージョンを出したことになる。せっかくなので裏話。
「いこーよ ロコミ・思い出」アプリはバージョン 1.0 を申請してリジェクトされた。理由はロコミのようなユーザー作成のコンテンツがある場合は、他のユーザーが「サービスの目的に沿っていないコンテンツ」を見ることがありうるので、利用規約にちゃんと書き、不適切な投稿をちゃんとチェックする体制を整えなさい、というもの。
実は、このアプリ。他の人のコンテンツは見れない。ともかく、PC から入力する手間を省けるように、と「iPhone からの簡単投稿」を目的にして最初のバージョンを作ったため (自分が投稿したロコミや思い出は見れる)。
で、Apple にアプリの性質を伝えるとともに、社内にチェック機構があることを訴えた (英語、書くの大変だった)。
同時に、Apple が言う他の悪い点の修正にも取りかかった。それは、利用規約がアプリから読めないというもの。正確にはアプリから新規登録する時に読めるんだけど、ユーザーに利用規約を読むには一度ログアウトして新規登録プロセスから読みなさい、というのは甚だ宜しくない。「マイページ」から利用規約やガイドラインにアクセスできる様に修正を開始。先の Apple への「訴え」には、このマイページ修正版をすぐにアップロードするからね、と書き添えていた。
修正が終わって再アップロードしようとした矢先... Apple からアプリをリリースしたよ、とメールが届いてるのに気が付いた。どうも、「訴え」だけで Apple は OK と判断したらしい。正直、メールを読んだ時は (初めてのアプリ・リリースなので) 足が震えた。英文なこともあって、何度も読み返した。意味は分かるんだけど実感できない。ん? もう App Store に並んでいるの? と遅ればせながら思い付いたほど。
丁度、そんなタイミングで前の席の人が聞いてきた。「アプリの再申請、通りそうですか?」
再申請もなにも... アプリ、もうリリースされてる。とは確認していないので言えず、「ん〜〜、分からない」。心の中で、「再申請しないでも、通ってるかも」と付け加えて。。。
iPhone を手に取って App Store で検索してみる。すると、あった。リリースされてた。
そして手元にはマイページから利用規約を読めるようにした新バージョンが残った。
ここのセキュリティを高めた方がいいんじゃないの? と社内で一点指摘された所と、もう一つ新たに見つかったバグを修正。そして、本当は 1.0 としてリリースするつもりで用意していて、結局、1.0 にならなかった修正版を再び Apple に申請した。
その 1.0.1 が 8/28 にリリースの運びになった次第。
アプリのレビューに投稿に成功したり失敗したりるとの記載があった。調べてみたところ、サーバー側の問題と分かった。この不具合対策は 8/28 に終わっているので、報告しておく。
iPad 4 と Nexus 7 (2012) と Nexus 7 (2013)の比較をしてみた。優っている方を青文字で書いた。
| iPad 4 | Nexus 7 (2012) | Nexus 7 (2013) | |
|---|---|---|---|
| OS | iOS 6.1 | Android 4.3 (Jelly Bean) | Android 4.3 (Jelly Bean) |
| プロセッサー | A6X (1.4 GHz Dual Core CPU + Quad Core GPU) | Tegra 3 (1.3 GHz Quad Core CPU + 12-core GPU) | Snapdragon S4 Pro (1.5 GHz Quad Core CPU + Adreno 320 GPU) |
| メモリー | 1 GB | 1 GB | 2 GB |
| ディスプレイ | 9.7 インチ (2048 x 1536) | 7 インチ (1280 x 800) | 7 インチ (1920 x 1200) |
| 解像度 | 264 dpi | 216 dpi | 323 ppi |
| バックカメラ | 5M ピクセル | 無し | 5M ピクセル |
| フロントカメラ | 1.2M ピクセル | 1.2M ピクセル | 1.2M ピクセル |
| ジャイロスコープ | あり | あり | あり |
| GPS | あり | なし | あり |
| NFC | なし | あり | あり |
| Qi | なし | なし | あり |
| 高さ | 241.2 mm | 198.5 mm | 200 mm |
| 幅 | 185.7 mm | 120 mm | 114 mm |
| 厚さ | 9.4 mm | 10.45 mm | 8.65 mm |
| 重量 | 652 g | 340 g | 290 g |
| スピーカー | モノラル | モノラル | ステレオ |
| Wi-Fi | 802.11 a/b/g/n | 802.11 b/g/n | 802.11 a/b/g/n |
| Bluetooth | 4.0 | 2.1 EDR | 4.0 |
| 通信 | 3G + 4G (LTE) | なし | なし |
過去記事 (clmemo@aka: iPad 3 と Nexus 7 のスペック比較) において、ぼくは Nexus 7 (2012) にバックカメラがないのが痛いと書いた。そのバックカメラが Nexus 7 (2013) に付いた。
Nexus 7 (2013) は CPU、メモリー、ディスプレイ、厚み、重さ、そして Qi 対応と Nexus 7 (2012) と比べて大幅にデバイスとしての力量差を見せつける。iPad 4 と比較するのは不平等だけれども、解像度の高さ・NFC 対応・Qi 対応は iPad に対する大きなアドバンテージになっている。あまり取り上げられていないけど、Wi-Fi が 802.11 a/b/g/n に対応したり、Wi-Fi 版でも GPS を搭載している点はもっと評価されても良いところ。
iPad 3 と Nexus 7 (2012) を使ってきて思ったのは、やはり 9 インチ・タブレットと 7 インチ・タブレットは同じタブレットでも利用シーンが少し違うということ。ゆったり家でウェブ・ブラウジングは画面の広い iPad の方が良い。7 インチ・タブレットは外出先の方が便利かな (Wi-Fi 版だとネット環境を別に用意しなきゃだけど)。
iPad mini については... あれは iPad mini 2 からが本気だと思っているので比較対象外にした。
昨日 (2013-08-28 Wed)、Amazon で予約した Nexus 7 (2013) 16GB が届いた。一日遅れになるけれども、開封の様子と最初のセットアップをスクリーンショットで追ってみたい。
到着した包みを開くと、青い箱。Google のロゴがシンプルにあるだけ。
青い箱の中には、もう一つ白い箱。こちらも、うっすら Google のロゴが見える。
開けばいきなり Nexus 7 とご対面。フィルムが輝いてる!!
Nexus 7 の下には簡単な説明書、PC リサイクルのシール、保証に関する冊子。そして、一番重要な Nexus 7 用の USB ケーブルと充電用アダプター。
箱から取り出すのはあっという間。
ここから楽しいセットアップ。
Nexus 7 の電源を入れる。
まずは言語の選択。「日本語」!!
Wi-Fi の選択。久しぶりに自宅の Wi-Fi のパスワードを打ち込む。
「Google アカウントをお持ちですか?」モチロン! 「はい」を選択。
Google アカウントとパスワードを入力
ログイン中の画面が現れるけど、すぐに次の画面へ...
Google サービスの設定。とくに気にすることもなく全てチェックを入れたまま次へ。
タブレットの所有者情報を入力。
「セットアップ完了」!!
一番手こずったのは、自宅の Wi-Fi ルーターのパスワードを思い出すことだったりして。
ちなみにスクリーンショットは、電源ボタンと音量下ボタンを同時長押しで撮れる。
Nexus 7 (2012) と比べると、まず動きがスムーズ。ブラウザーや Twitter が指に吸いつくようにスムーズに動いてくれること!! なんたる快感。加えて高細密なディスプレイが美しい。iPhone 5 や iPad の Retina 画面でも思ったけど、この美しさは正義! 最後に YouTube を見て思ったこと。音がステレオに聞こえる! 音楽を聞いてて楽しい。iPad や Nexus 7 (2012) はメイン・スピーカーが背面下にしかない。縦に持てば下から音が聞こえるし、横に持てば右から音が聞こえる。でも、Nexus 7 (2013) は (横持ちで) 左の音は左から、右の音は右から聞こえる。これは YouTube が楽しい。
一日触って、もう 2012 には戻れなくなった。
2013-08-26 (月)、Google でプレス・イベントが開かれ Nexus 7 (2013) の国内発売が発表された。本家 Google Play では 2013-08-28 の 0 時から予約開始。他のネット・ショップも 28 日から予約開始。家電量販店では 26 日 13 時から予約開始。28 日から発売。
ネットを見ていると、いくつかフライングで予約を開始しているところがある。Amazon もその一つ。26 日夜の時点で Nexus 7 (2013) の予約ページが出来ていた。
Nexus 7 (2013)、は 2012 年度版と比べると割高。その分、2012 年度版にはなかった新しいデバイスが搭載されている。CPU, GPU のパフォーマンス・アップ、メモリー増量は言うにおよばず、Full HD (1290 x 1080) 液晶の採用、前面 (1.2M) と後面 (5M) のカメラ、Bluetooth 4.0 対応、ワイヤレス給電 Qi 対応、近距離無線通信 NFC 対応、画面データの無線伝送 Miracast サポートと新機能が沢山。
ぼく個人としては背面カメラのサポートが嬉しい。カメラ系のアプリがようやく楽しめる (Nexus 7 2012 は前面カメラのみ、カメラ系アプリはインストールできなかった)。
※ 今、ブログを書こうとして Amazon のサイトを見てみたら、「予約受付」から「注文可能になったら E メールでお知らせします」になってた。フライングは一瞬だったのかな?
2013-08-22 (木)、iPhone アプリ「いこーよ ロコミ・思い出」アプリをリリースした。ここ数か月、ブログの更新回数が落ちていたのは、会社でこのアプリをずっと作っていたため。iPhone アプリの初回リリースは秘密のうちに作るのが不文律としてあるから、色々書きたいことがあったけどずっと口を閉じてた。ようやくリリースができて一安心。簡単にアプリの説明をしたい。
「いこーよ ロコミ・思い出」は、子供とお出かけ情報「いこーよ」の機能を補完するためのアプリ。子連れ向けスポット・イベント検索サービス「いこーよ」については過去にレビューを書いたので参照して頂きたい。
もともと PC 向けのサイトとしてスタートしている。そのため、スマホ向けの最適化が遅れていたり (今年の 7 月末にスマホ版リニューアルが行なわれた)、ユーザーが投稿するレビュー「ロコミ」が PC からの投稿が前提になっているという問題点があった。
この手のサイトで、ユーザー投稿によるレビューを集められるかどうかは死活問題にあたる。
そこで、まずレビューをスマホから簡便に投稿できるアプリを開発することになった。Android は機種数が多くて検証が大変なので、iPhone アプリから作ることになった。
「いこーよ」にはレビュー「ロコミ」の他に、ー言コメントを残せる「行ったよ」という機能があった。これを Twitter 風に「気軽に」書き込むツールとして拡充したのが「思い出」機能。「行ったよ」は 20 文字だったけど、「思い出」は 120 文字に文字制限を増やした。
写真は一つの「思い出」につき一枚。機能を制限することが (Twitter の様に) 逆に簡便・気軽・身近さに繋がると期待している。
「思い出」には「ロコミ」の様な細かい入力項目はないものの、「ロコミ」にない機能が 2 つある。
1 つ目の機能は「自宅」や「おばあちゃん家」など、スポット名と紐づかない場所での「思い出」を残せるように。これはスポットのレビュー機能である「ロコミ」には持てない機能。
2 つ目の機能は公開・非公開を設定することができる機能。レビューは公開が基本だけど、「思い出」はあくまで家族のプライベートなものだから非公開をデフォールトにしてある。
アカウント作成は PC サイトやスマホ・サイトからも出来るけど、アプリからも出来るようにした。一応、手順を書いておく。
アプリを起動すると現れるのが下のスクリーン・ショット。
「新規登録」ボタンを押すと、順に
が表示され、その後にアカウント作成画面が現れる。
固有のアカウント名、パスワード、そしてメール・アドレスを入力して右上の「登録」ボタンをクリック。
登録したメール・アドレスに確認メールが届く。
確認メール内のリンクをクリックして、「いこーよ」の確認ページに飛ぶと、アカウントが作成される。確認メールを確認するのを忘れてログインしようとしないよう注意。
初ログインすると、「ロコミ」と「思い出」の簡単な説明が出る。
「思い出」の登録方法を手順を追って書いてみる。
タブから「思い出」を選択。ここは「思い出」一覧が表示されるページ。まだ何も入力していないので空のまま。
右上の「新規作成」をタップ。
入力画面はスクリーン・ショットの通り。ちょっと味気ないかな?
上から順に「お出かけ日」「写真」「スポット」「公開・非公開 (非公開がデフォールト)」「本文入力」と並んでいる。
お出かけ日は最初から入力されている。
カメラ・アイコンの行をクリックすると写真追加のシートが現れる。カメラからの撮影とカメラロールからの選択が可能。
「どこ」をタップするとスポット入力。必須入力項目。GPS を使った「現在地から探す」、GPS によらず「キーワード検索」を行なう機能、そして (「思い出」だけの)「自由記入」機能。
「本文」部分をタップすると画面遷移して本文入力画面へと移る。「思い出」では 120 文字の文字制限があるので、一応文字数カウントダウン付き。
入力を終えたら「完了」ボタンを押して、さっきの画面に戻る。そして「投稿」を押せば「思い出」が「いこーよ」サーバーにアップロードされる。一覧で投稿した「思い出」を確認もできる。
本当なら、ここでぼくの子供を載せることができれば良いのかもしれないけれど、あいにく子供はいないので App Store の写真でお茶を濁す。
左のスクリーン・ショットが思い出一覧。右のスクリーン・ショットは、思い出一覧から一つの「思い出」を選択して個別ページに移動したもの。こんな感じで写真が並ぶ。
「ロコミ」はレビューとしての要素が強い。「思い出」との違いは下記の通り:
簡単に「いこーよ 口コミ・思い出」アプリの説明を書いてみた。ぼくにとって、初めてリリースする iPhone アプリなのでとてもドキドキしている。間に合わなかったけど、夏休み前のリリースに向けて色々機能を削った。アップデートを重ねて、機能の充実・使い勝手の向上を図りたい。
お子さんを持つ方に使って頂けたら幸い。
先のエントリー「Emacs で 2,8,16 進数を簡単に 10 進数になおす」を書いたら、Twitter で面白いことを教えてもらった。
さっきと同じ様に *scratch* バッファーに移って次の文字を入力して C-x C-e
#32r10
32 が返ってくる。実はこれ、32 進法での「10」の値を返してる。試しに 32 進法の「20」を計算させてみる。
#32r20 -> 64
# と r の間に挟まってる数字が基数になる。なら 24 進数は?
#24r18 -> 32
オオッ。
36 進数もいけるかな?
#36r1z -> 71
凄い。凄い。
もちろん、2 進数、8 進数、16 進数も...
#16rff-> 255#8r10-> 8#2r100-> 4
こりゃ面白いことを教えてもらった。
ソースコードを読んでいると、2 進数や 8 進数や 16 進数の直値がときおり現れる。時にその値の 10 進数値を知りたいことがある。色々ツールは沢山あるけれど、Emacs 使いなら Emacs ですぐに値を知ることができる。意外と知られていないので、ご紹介。
これでミニバッファーに数値が現れる。数引数を取れば、ミニバッファーではなく *scratch* バッファーに値が出力される。
N 進数の書き方は下記の通り:
#xff(16 進数: 255)#o10(8 進数: 8)#b100(2 進数: 4)
x,o,b は大文字 (X,O,B) でも良い。
Emacs 使いにこそ手軽に使えるので、覚えておかれると良ろしいかと。
何度言っても忘れてしまうチケット起票者に対して、確認画面を出すことになった。使っているチケット管理システムは Redmine。Redmine はデフォールトで JQuery をロードしているので、いきなりソースコードに JQuery のコードを書くことができる。
編集するのは /var/redmine/app/views/issues/new.html.erb。ページの末尾に次のコードを突っ込む。
<script>
$(function(){
$('#issue-form').submit(function(e) {
if (!confirm('確認用文言')) {
e.preventDefault();
$('#issue-form').removeAttr('data-submitted');
return false;
}
});
});
</script>
これで、「作成」ボタンを押すと「確認用文言」がポップアップして OK を押すとチケットが作成され、キャンセルを押すともう一度説明文を編集することができるようになる。
「確認用文言」は状況に応じて変わると思うけど、「再現手順は書きましたか?」とか「不具合画面のスクリーンショットは貼りましたか?」等々、入力されなくて困ってることを書いておけば良いと思う。if 文以下をコピペすれば、複数個の確認画面を表示できる。
一日に数本チケットを作るかどうかという環境において有効。あんまりやりすぎると、自分がチケットを作る時ストレスになるのでご注意を。
会社に JQuery 本が転がっていたので、ちょっと JQuery の勉強でもしてみようかと本を手に取った。本当に基本的なことをメモ。
jQueryデザインブック 仕事で絶対に使うプロのテクニック
CDN の提供は Google, Microsoft, JQuery, CDNJS の三者が行なっている。
大文字で「VERSION」と書いた部分には、JQuery のバージョン番号を入れる。
Google では、下の番号を省略すると最新バージョンが自動的に指定される (他の CDN は知らない)。例えば、2.0.2 とフルバージョンを指定するのもあり。2.0 とすると、2013-07-16 現在最新の 2.0.3 が使われる。単に 2 とするとバージョン 2 系の最新版が得られるハズ。
フルバージョン指定すると、丸一年間キャシュされるのでその分高速化が期待できる。一方、バージョンを省略すると、24 時間しかキャッシュされない。キャッシュの恩恵に与かるか、サービスを自動で最新にしたいか。目的によって使い分けると良さそう。
最後に Google の Script を書いておく。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
おや、http: がないけれど良いのかしらん。
JQuery の基本的な構文は下記の通り:
jQuery('セレクタ').メソッド(パラメーター)
セレクターは CSS と同じものが使える。ID を指定するなら #id, クラスを指定するなら .class, h1 要素直下の p 要素は h1+p といった具合。
メソッドは... 本やウェブサイトで勉強して...
パラメーターも同様に...
jQuery にはシンタックス・シュガーが用意されていて、普通はこちらを使う:
$('セレクタ').メソッド(パラメーター)
JQuery のコードは、onload 以前に走らせることが可能。タイミングとしては HTML の準備が整った段階でのスタートとのこと。
$(document).ready(処理);
実際のコードは次の様になるか...
$(document).ready(function(){
処理
});
これもシンタックス・シュガーが用意されている:
$(function(){ 処理 });
というわけで、簡単なサンプル。サイト内に foo という ID を持つ a 要素があったらクリックした時に alert を出す jQuery Script。
$(function(){
$('#foo').click(function(){
alert('#foo is clicked')
return false;
})
});
うん。まだ、始めたばかりで勝手が良く分かってない。とにかく楽しそうなのは実感した。