MacBook Air (11-inch Mid 2012) クリーンインストール

ほぼ1年ぶりの投稿となってしまいました。

このところはHenPitsu、SAARTともにiPhone6 / 6Plusに対応したりしていましたが、2012年に購入したMacBook AirのSSD容量が足らなくなってきました。もともと64GBと一番少ないモデルなのもありますが、不要なデータなどを削除してもどうにもならないところまでやって来ました。OnyXというソフトで余計なログなどを消してみたのですがそれでも限界です。

主な原因はOSやXCodeなどアップデートを繰り返した時に余計なゴミのようなものがたまってしまったことだと思います。

ということで、一旦データをバックアップして、OSなどを一旦まっさらな状態から入れなおしてみました。

そうしたらなんと空き容量が30GBくらいになりました。

スクリーンショット 2014-11-25 17.19.07

なにがこれだけの容量を占拠していたのか、後になってからTimeMachineバックアップを見ながら犯人探しをしてみたところ、~/Library/Developer以下が怪しいようです。結局クリーンインストールしてしまいましたが、こんなページがありました:

iOS開発していて気がついたら一杯のハードディスクを20GB以上軽くする方法!

先に気づいていたらよかったかもしれないですが、ほかにも余計なものなどをなくすことができたと思うのでひとまずよしとしましょう。これであと10年は戦える!
追記:こんなのもありました  ハードディスクの空き容量が極端に少なくなる場合の対処方法

Kobo gloと自炊PDFファイル Macで変換するには

昨年Kindle4を買いましたが、その後電子書籍の便利さに魅せられて自分で持っている本をほとんど電子化してしまいました。Macを使っているのでScanSnap S1500Mというのを買ってプログラミング関連の分厚い本とか、漫画とかを片っ端からいわゆる「自炊」しました。あとから画質を良くすることは出来ないので、全て300DPIで取り込んであります。iPadのRetina Displayで読むと、ほとんど紙の本と変わりません。

iPad(3)では容量と処理速度にさほど問題ありませんが、Kindleに自炊したPDFを転送すると、周囲に変な余白ができるのと、Kindle自体の容量がすくなくてSDカードなども入りませんし画質が悪く可読性も低くなります。速度もネックになるのでこんなものかなと思っていました。

というところに最近Kobo gloが発売され、処理速度・解像度がアップしていること、なによりmicroSDカードが使えることから購入してみました。

PDFを表示させると処理速度に不満があるのと、画像の縮小アルゴリズムが良くないのかあまり見栄えがよくありません。色々調べてみると、ChainLPというソフトで加工するといいらしい・・・と言ってもこれはWindows用しかないようです。いろんなことがOSXでできるようになっていますがこういうことは久しぶりです。

やることは、

  1. すでにあるPDFファイルから画像ファイルを抽出する
  2. 解像度を変更する :758×1024 がよいらしい。
  3. 解像度を変更したjpegファイルをZIP圧縮して、CBZという拡張子にする

ということですが、どうしたものかな・・・と考えてみたところ、自分でChainLPのようなソフトを書いてもいいのかもしれませんがオープンソースのコマンドラインツールで何とかならないかと思いつきました。

PDFからの画像抽出は、popplerというパッケージ(プログラム群?ライブラリ?)にふくまれているpdfimagesというのが使えそうです。

解像度の変更はImageMagickというパッケージ(同上)ふくまれているmogrifyというのでなんとかします。ついでにKobo gloの画面は白っぽいのでガンマ値の変更などもここで行います。ImageMagickはそういえば10年ほど前に大学院生の時に使ったことがありました。この程度の処理に使うのがもったいないくらい高機能なパッケージです。

これらをインストールするには、オープンソースソフトウェアの作法に従ってソースをダウンロードして自分でコンパイルすることになります。tar.gzファイルをダウンロードして

./configure
make install

すればいいようになっています・・・と思ったらライブラリの依存関係が。しばらく自分で何とかしようと思いましたがやはりこれは無理で、MacPortsのお世話になることにしました。MacPortsをインストールして、

sudo port install poppler
sudo port install ImageMagick

とするだけです。・・・色々使わないものもインストールされているのですが/opt/localというフォルダには800MBほど入っています。

さいごにこれらのツールを起動するシェルスクリプトを書きます・・・というところでシェルスクリプトの書き方を勉強し直すことになりました。ペーパードライバーが20年ぶりに運転するような気分です。

#!/bin/sh
mkdir temp-by-script
for I in "$@"
do
echo Processing "$I"
pdfimages -j "$I" ./temp-by-script/
mogrify -level 15%,85%,0.5 -resize 758x1024 ./temp-by-script/*.jpg
zip -q "${I%.pdf}.cbz" ./temp-by-script/*.jpg
rm temp-by-script/*
done

使用法は、PDFファイルをおいてあるディレクトリをカレントにして、このスクリプトを”convert_glo.sh”とでも名付けておき”chmod u+x convert_glo.sh”で実行可能にします。その上で” ./convert_glo   (ファイル名:ワイルド・カード使用可)”とすると、temp-by-scriptというディレクトリが作られて、その中にイメージを展開、修正したあとで圧縮します。展開したファイルを後で削除するようになっているところ以外は既存のファイルを壊すことはないのではないかと思いますが、使用して何か損害があっても補償はいたしかねます。

なおmogrifyのパラメータについて補足説明しますと、輝度85%以上は白に、15%以下は黒に強制するのと、その間のところのガンマ値を0.5にして色を黒っぽいものにするという設定です。シェルスクリプトの部分はほんとにプリミティブなのでもうちょっと練った物を書ければいいのですが自分の用事にはこれで足りてしまうので。テンポラリフォルダも消していませんが、間違えて変なものを消してしまうのが怖いのであえて書いていません。

ところで、ファイル名を日本語にしているのですが一部のファイル名でワイルドカードの展開がうまくいきません。OSXの問題なのかと思いますがLinuxなどではどうなのでしょうか。

2013.10.25 追記:ファイル名に空白(スペース)を含む場合うまくいかないのでスクリプトを修正しました。ダブルクォートをつけるだけなのですが、テキストエディット.appを使うと変な感じになってうまくいかないです。
2014.1.13追記:ダブルクオートがWordPressによって勝手に整形されていたので、シェルファイルのところはcodeとして表示するようにしました。これまで表示されていたテキストを直接コピーアンドペーストしたときにはうまく動かなかったのではないかと思います。

2015.12.9 追記:mogrifyのあとのresize 758×1024のxが変な文字×(掛け算?)になっていました。どこでこうなったかよくわかりませんが、このページからコピペした時はここでエラーになると思われます。直しておきました。

近況(2012年9月)

このところめっきり更新していませんでした。ほぼ半年です。昔から日記などを定期的につけるのは苦手でした。

その間にHenPitsuはランキングの乱高下を繰り返しながらだんだん落ちています。マスコミに取り上げられることはなく(1件だけ、欄外で紹介されましたが)2ちゃんねるでスレが立った時だけランキングが上がるというパターンです。

そろそろiOS6が出るのですが、今のところiOS6の新機能に対応する予定はありません。iPadも、対応してもいいのですがそうするのならmajor rewriteをして新たに作りなおす位のほうがよさそうな感じで、なかなか手が出ない状態です。

では何をしていたかというと、音楽がらみのアプリを作っています。本業とも関係するのと、まだ未完成なので詳細はまだ書けませんが。

その開発のために先週末にMacBookAir(11-inch, 2012)を買いました。SSDは64GBですがXCodeしか使わないので十分です。画面が小さいのですがiPadを外付けディスプレイ代わりに使うように設定しました。

自宅ではmac mini(2010)を今も使っています。2台のマシンで開発するために、Dropboxで同期してみました。しかしいちいちソースファイルをコピーするのは大変だし事故が起こりそうです。GITで何とかならないかと” GIT Dropbox XCode “で検索してみると…

XCode4.3.3のgitとDropboxを使ってお手軽疑似分散型バージョン管理 − iPadな日記

設定してみるとうまくいくようです。昔FISHER for Windowsを3人で開発していた時にRCSやCVSを使おうとしてめんどくさくなり断念した頃と比べると便利になったものです。

ビル・アトキンソンとQuickDraw リージョンについて思いを巡らせた高3の夏

iOSの開発をしているのでiPadでも買うべきところですが、Kindle4が安かったのでつい買ってしまいました。軽いし文字も読みやすいので、読書にはいい端末です。

さて、Jobsの伝記が発売になったので、早速Kindleで購入して読んでいます。iOSで読むのが本当はいいのでしょうけど。

Lisa/Mac開発のくだりになって、ビル・アトキンソンとQuickDrawとりわけリージョンの話がちょっと出てきました。簡単に言うと、コンピュータの画面上の一部の領域を、矩形に限らず円や任意の形で指定できるという機能です。ドロープログラムで、一部の領域をマウスで選択して動かしたりできますね?あるいは、上のウィンドウで隠された下にあるウインドウの、画面に出ている部分はただの四角ではなくL字型だったりしますね?そういう様々な形を扱うことができるのがリージョンです。

高校生の頃、OS-9/68000を使っていましたが、ウインドウシステムはどうも貧弱で使い勝手の悪いものでした。その頃(1988頃)にはすでにMacでマルチウインドウは高い水準で実現されていました。Macでどういう風になっているのか、MacのToolbox (OSに相当するような、GUIの基本ルーチン)の解説書を、連日地元のK書店に立ち読みに行きました(1万円以上する本で、何巻かに分かれていた記憶が)。

その時、上記の「リージョン」というのがあるのを知りました。今普通にそれを実現しようとすれば、マスクに相当する白黒のビットマップを作るところでしょうか。ただ、当時のマシンのメモリは非常に限られていました。仮に512x512のビットマップをモノクロで作ると、32KBytesになります。また、リージョンは仮想座標系の中で拡大できるので、32000x32000とかになりえます。1MBytes以下のメモリしか積んでいなかった当時のマシンでは、ビットマップで実装するのは無理でした。

しばらくパソコンを封印していましたが、どのようにすればリージョンが実装できるのか、自分なりに考えてみました・・・

不定形のようなリージョンでも、どこかのy座標について見てみると、つまり水平の赤線との交点で見てみると、赤線はリージョンの中に出たり入ったりします。交点の座標を記録しておけば(この場合4個),赤線の上の任意の点について、リージョンの内部にあるか外部にあるかは簡単に判定できます(x座標の値が1つ目の交点以下なら「外」、1つ目と2つ目の交点の座標の間なら「中」、2つ目と3つ目の交点の間なら「外」、・・・)。これだと、交点の座標だけ記憶すればいいので、ランレングス圧縮と似たような効果があって記憶容量はずいぶん少なくできます。

受験生だったので実装したりはしなかったし、これを始めると何ヶ月もかかってしまったでしょう・・・

表題のビル・アトキンソンの話ですが、ふと思い立って検索してみると、QuickDrawのソースコードは公開されているのでした。

Computer History Museum – MacPaint and QuickDraw source code

68000のアセンブリ言語を読むのは15年ぶりでしょうか。68Kのアセンブリ言語は、Cを読むのと殆ど変わりません。なんでこんなに良いCPUが廃れてしまったのか・・・

さて、Regionの実装は、ほぼ高校生の時に予想したとおりでした。アセンブラでこれほど綺麗なソースはすごいです。アップルが、その後PowerPCに移行してもここだけは68Kアセンブラのままだったそうな。

いろんなルーチンがある中でInsetRgnというルーチンがあり、あるリージョンのxピクセル分内側に縮小したリージョンを作るというものですが、これは実装方法がよくわかりませんでした。

ソースコードを読んでみると、まず横方向には、僕の書いた図で点1を右に、点2を左に、点3を右に、点4を左に・・・と動かすことで、領域を縮小するようです。これはわかります。縦方向はどうするのかというと、なんとX/Y座標をスワップして、更にもう一度横方向にInsetしているのでした・・・ビル・アトキンソンすごいな。

結局DELL 433s/Lは・・・?

さてOldPCについてお話ししているのかプログラミングについてお話ししているのかよくわからなくなてきましたが・・
大学入学時に持っていたのはX68000でした。
大学2年くらいの時にPC9801NS/Tを購入しました。
大学4年くらいの時にDELL 433s/L(486sx/33)を購入しました。このマシンはその後CPUを486/66, AMD5x86-133とグレードアップしながら4年ほど使用しました。

昔はソフトというのは機種と結びつけて販売されていました。そのうちソフトはOSと結びつけて販売されるようになりました。いまは昔ほどモデルチェンジに踊らされないようになりましたね・・・

433s/Lはその後アップグレードしながら愛用していましたが、1998年頃何故か急に起動しなくなり、その当時流行っていたABIT BH6マザーボードを使ったCeleron 300Aをオーバークロックしたマシンを自作しました。その後、2年に1回くらいのアップグレードを経て今に至りますが今でもAMDが大好きです。5×86-133がかなり良かったのとx86−64の設計思想に共鳴したからですが。
DELL 433s/Lを思い返してみると、やはり拡張性のあるマシンというのはいいですね。いまのメインマシンはMac miniなのでその点は微妙です。

結果的に言うと、当時DELL 433s/L にするかMacにするかで迷っていたのはDELLにしてよかったと思います(結局Windowsが勝利しましたし、CPUのアップグレードというのもその頃から出てきた概念でした)。いままたMacに回帰しているわけですが・・

なんでまた?

HenPitsuの話です。

12月初めに一旦AppStoreの「エンターテイメント」「無料」の中のランキングで30位くらいまで上がったあとに圏外に飛び去っていたのですが、1月22日ごろからどこのどなたが宣伝してくださったのかわかりませんがダウンロード数が急増しています。いまitunesでみると無料ソフトの中で第4位になっています!

自分でかなり適当に作ったアイコンが皆様の目に触れるのには正直当惑します。だれかきれいな字で書きなおしてくれないかな・・・

無料なので別に金銭的にどうということはないですが、自分が作ったプログラムを楽しんでもらえるのはうれしいものです。正直ここまで行くとは思っていませんでしたが・・・。iADが日本で立ち上がるといいですが、広告が出ることについてブーイングが起こるのではと少し心配しています。

さて、実は筆の書き味を少し変えるパラメータ調整を1ヶ月くらい前に完了しています。ただ、変更すると今までのほうが良かったなどの苦情が出ないかも心配です。使用中に変更できるようにするのもいいかもしれませんが・・・

Objective-Cでのアプリ作成

9月1日に退院して、すぐにiPhoneとmac miniを手に入れて、しばらく本(O’reillyのiPhone SDKアプリケーション開発ガイド)で勉強した後に先週からアプリケーション作成を始めました。

1週間でほぼ完成したものができたので(アイコン等のデザインや肝心のアプリ名はまだ決まっていませんが)、実機で動かしてみたくなりAppleでデベロッパとして登録しました。

 

Objective-Cはまったく初めてでしたが使ってみるとその大雑把さが気に入っています。ただViewなどの依存関係がまだよくわかっていないのでグローバル変数を使いまくりになってしまいました。

こんなプログラムを書くのはDOSの時代以来です・・・

誰も読まないと思いますが、これまでのパソコン・プログラミングの遍歴をしばらくまとめてみたいと思います。