Release

iOSアプリ「CoffeeScript At Once」がオープンソースになりました

昨年6月にリリースした、iPhone/iPad向けのCoffeeScript・JavaSciritプログラミングアプリ「CoffeeScript At Once」をオープンソースとしてGitHub上で公開しました。

tnantoka/CoffeeScriptAtOnce · GitHub

なぜ?


『協力するからもうちょっと頑張ろうよ』というお声をかけていただいたのがきっかけです。
Jsanyに引き続き、大変ありがたいことなんですが、ちょっと今はこのアプリにさく体力が確保できそうにありません。それならいっそのことオープンソースにしちゃって自由にいじってもらおうと考えました。

このアプリは、2012年6月11日のリリースから約27000件ダウンロードされており、平均評価も星4つと好評です。これ自体は大変満足のいく結果ですが、広告収入はというと、約7000円と、Developer Program 1年分も賄えないものでした…。

クローズドにしていてもたいしてメリットがないんだったら、鳴かず飛ばずのまま放置してるより、オープンソースにして誰かの役に立つ方がマシ、というわけです。
※ 儲ってるなら、クローズドにしておいて「ぐへへ…」とする意味もあるんですがね。

既知の問題


パッと思いつくだけでも、以下のようなイマイチなところがあります。
いつもながら、1年前の自分をぶん殴ってやりたいです。

    • テストが書かれていない
    • iOS4.3を無理してサポートするための無駄なコードがある
    • 広告のコードとかコピペがたくさんある
    • 絶望的にコメントがない

まぁそれでも、ユーザ層がニッチとは言え、一応1万件以上ダウンロードされてるアプリのソースなので、誰かの役に立てば幸いです。

オープンソースになったcsatonceを、改めて宜しくお願いします。

 

CoffeeScript At Once 1.8.1(無料)App
カテゴリ: ユーティリティ, 仕事効率化
販売元: Tatsuya Tobioka – Tatsuya Tobioka(サイズ: 0.8 MB)
全てのバージョンの評価: (12件の評価)
+ iPhone/iPadの両方に対応

それでは。

GemfileからSpecial Thanksページを生成するgem「arigato」と、それをRailsに簡単に組み込むengine「arigato_rails」を作った

前々からいつかやりたいと思っていた、gem作りに挑戦してみました。
試行錯誤のうえ、できたのがこちら。

Arigato, Arigato_Rails

Railsならbundleするだけで以下のようなページが生成されます。
Special Thanks

先日公開したKonnyakuにも組み込む予定。

なぜ作ったか

お世話になってるオープンソースプロダクトへのせめてのもの感謝として、積極的にAttributionするように心がけています。

いつもは、Footerに並べることが多いんですが、それだとどうしてもスペースや保守の限界があって、主要なものだけになってしまいます。

そこで目を付けたのがGemfile。Rubyならまさにこれがお世話になったリストだから、この情報を使ってスペシャルサンクスページを自動生成しちゃえばいいじゃん、と考えました。

 

はじめてのGem

の2つが参考になりました。

あとはOreThorのコードやSpecも勉強になりました。
また、Gemfileのパースについては、Bundler内のDSLというクラスを使わせてもらいました。

 

はじめてのEngine (Plugin)

あたりが勉強になりました。

また、同じ種類(bundleしたら画面が増える系)のgemということで、
schneems/sextant · GitHub
のコードを参考にさせてもらいました。

 

まとめ

今まで敷居が高いと思い込んでいましたが、単純なコマンドやプラグインなら思ったより簡単に出来るということがわかりました。これから、Gem化できそうなものがあれば積極的に作っていこうと思います。
とりあえず、arigato_podsは作りたい。

あとちゃんと出したものを保守する。テストも書く。

それでは、良い週末を。

Rails 4使ってみたい。多言語ブログ書きたい。じゃ、いつ作るか、今でしょう

林先生、大人気ですね。他にも「マドンナ古文」とか、あのCMは面白くて好きです。

さて、Rails 4で何か作ろうと思い立ってから2週間、せっせと作ってきたブログエンジンがようやく形になりました。
(ちょっと時間かかりすぎなんですが、最近あんまりまとまった時間が取れてないので、自分を責めないようにしている感じです…。)

Konnyaku · Multilingual blog with Rails 4.0

Konnyaku Tips のような、オシャレ(※)な多言語ブログが作れます。素敵ですね!
有料のBootstrap用スキンを使ってるからですが^^

    • Rails 4.0を使ってみる
    • 多言語なブログを簡単に書きたい
    • ついでにPostgreSQLも触ってみたい

という最低限の目的は達成できたので、今後は、

    • ちゃんと保守する

をテーマに放置せずに頑張りたいと思います。
そのためにも、もっとちゃんとテストを書けるようにならないと…。
全然上達してる気がしないので、ソースを晒すことでテスト力をアップしようという目論見。

初Rails 4の感想

前評判通り、3.1へのアップデートほどハマるところはないと思います。
作業ログをブログ化しようとしてましたが、途中で断念しました、すみません。
気になる部分あればソースを見るか、メンションでも飛ばしてください。

全作業中、一番ハマったのは、TurbolinksでAdsenseが動かないところ(笑)
Adsense won’t load with turbolinks · Issue #151 · rails/turbolinks にグレーな解決策が提案されていましたが、これでアカウント無効化されたらシャレにならないので、開発者ブログでは一旦Turbolinksをオフにしています。

体感速度に結構寄与しそうな感じだったので是非使いたかったんですが…。
特定のDOMは差し替えないというオプションが欲しい今日このごろ。
サイトに広告貼れないと貧乏人には辛いぜ…?

あとPostgreSQLはいろいろとMySQLと違うところが多くて結構つまづきました。誰かが接続してたらDBを削除できなかったりとか。

やっぱり新しいものを弄るのは楽しいので、しばらくRails 4でいろいろ作ってみようかなと思っています。

参考書籍

 いつやるか? 今でしょ!

間違えた、こっち。(しつこい?)

 WEB+DB PRESS Vol.73

それでは。

Jsany 2.0.0がリリースされました

Jsany(旧JavaScript Anywhere)は2010年に僕がはじめてリリースしたiPhoneアプリです。
初心者が書いたボロボロのコードをなんとか延命してきたんですが、限界をむかえたため、今回大幅に作り直しました。

どんなアプリなのか?
説明のかわりに、3年前に僕が書いた紹介文を引用します。

JavaScript Anywhere
―いつでも、どこでも、JavaScriptプログラミング!

JavaScriptを覚えたての頃、電車でもプログラミングがしたくて、
携帯電話のフルブラウザ(Locationバー)を使うという無茶をしていました。

この試みは、「about:blankを開いても広告の通信料がかかる」という、
a社の仕様(?)により続けられることはありませんでしたが、
今でも、ふと思いついたコードを試したいことはあります。

JavaScript Anywhereはそんな場面で使えるものを目指して開発しました。
高度な機能はないですが、JavaScript(+ HTML, CSS)をさっと書いて動かすことができます。

外でJSを書きたいと一度でも思ったことのある人は、是非使ってみて下さい。

バージョンアップ後もアプリのコンセプトは、全く変わっておらず、上記のままです。JSが書ける最低限の環境を提供します。
ただ、いくぶん使いやすくなっているはずですので、興味のある方はぜひこの機会にお試し下さい。

 

Jsany · Code Editor 2.0.0(無料)App
カテゴリ: ユーティリティ, 仕事効率化
販売元: Tatsuya Tobioka – Tatsuya Tobioka(サイズ: 5.6 MB)
全てのバージョンの評価: (167件の評価)
+ iPhone/iPadの両方に対応

 

アプリ名変更はやはり愚策らしい

心機一転の意味もあり、アプリ名を略称にしましたが、現状、ダウンロード数は1/5以下に激減しています。AppStore内SEOは思った以上に重要なようです。

 

シングルタスクだったあのころ

書き直しながら古いコードを見てると、「アプリ終了時に開いていたプロジェクトを記憶しておいて、次回起動時に自動で開く」みたいな処理があって、あぁ、そういえば、このころまだiPhoneはシングルタスク(ホームボタンを押したらアプリ終了)だったんだなと思い出しました。
プラットフォームは忘れるぐらい当たり前に進化していってるけど、その上で動く、自分が書いたものは誰かの生活を便利にできてるのかな?とかなんかそんなことを考えました。
特になんの結論も出てません。ただそれだけ。

 

2013年、Jsanyをよろしくおねがいします

アプリの宣伝なんだか、ひとりごとなんだか、よくわからないエントリになってしまいましたが、この辺りで終わります。
今年はこまめにアップデートして行きたいと思ってるので、お付き合いいただければ幸いです。

それでは。

Jsany · Code Editor

KindleでTideSDKの入門本を出版してみた話

昨年末、TideSDKの最新版が出ていることを知って、試しに単純なMarkdownエディタを作ってみたら、思ったよりハマらず作れました。

で、いつもなら「Hello, TideSDK! Markdownエディタを作ってみた」みたいなエントリを書いて済ませるんだけど、なんかワンパターンで飽きたし、どうせ無料でやってもdisられるポイズンな世の中だし、どうしようかなぁと考えてたら、Kindleさんの存在を思い出した。

というわけで、TideSDKについて知り得た情報をまとめたものを、AmazonのKindle ダイレクト・パブリッシング (KDP) で出版してみました。

こちらです。


TideSDKでつくる!Macデスクトップアプリ(v1.3.1-beta対応)

価格は、ロイヤリティ70%オプションを選択した場合の最低価格(ドル)です。
※ Kindleストアはほんとに1クリックで買えてしまうのでご注意ください。

ストアの説明にもある通り、クオリティはこのブログ上の記事と同等のレベル、ということであまり期待しないでください。それでもなお興味があるという方はお手…じゃないな、ご端末にとってみていただければと思います。

超ニッチな内容のため売れて10冊ぐらいと見込んでいます。作業時間を考えると完全に赤字ですが、万が一利益が出た場合は、一部をTideSDKのプロジェクトに寄付する予定です。(大企業がたくさんスポンサーについてるので、端金かもしれませんが…。)

ちなみに以下がiPadでとったキャプチャですが、実際に端末で見れるのを確認すると、不覚にもちょっと感動してしまいました^^

以下、やってみた感想とか。
思いつくままに書いてたら長くなってしまいました、すみません。
KDPで出版しようと思ってる人には、もしかしたら参考になるかもしれません。

ePub作成はsigilが無難だと思う

KDPではHTMLやdoc(x)ファイルもサポートしていますが、一番無難そうだったePubを選択しました。

PagesがePubを吐けるという情報を得たので、はじめはその方法でやってみました。
(何も考えずにWordで書き始めちゃったので、それをPagesに読ませてePub出力)

確かにそれなりに見た目も整えてくれるし、Kindle Previewerでも特に問題なく閲覧できるようでした。しかし、ソースコードなどを見やすくするためには、出力されるXHTMLを修正する必要が出てきます。で、Pagesはどんなタグを吐くかというと、

のように、変なspanや空白のpがあったり、急にstyle属性使ってみたりとか、調整するにはしんどそうな感じです。

かといって、1から全部自分で書くのはもっとしんどい、ということでsigilの登場です。

ごく普通のWYSIWYGエディタの感覚で書いていけば、段落はp、見出しはh1〜6、リストはul/olと、素直なマークアップを出力してくれます。preとかblockquoteは自分で書きました。classやstyleは特につきません。見た目はCSSで整えましょう。

sigilで困りそうなところ

僕がつまったところを列挙しておきます。

  • 表紙の設定
    Imagesを右クリックして、「Add Existing Files…」から画像を追加。
    追加した画像を右クリックして、「Add Semantics」→「Cover Image」をチェック。 
  • 論理目次の作成
    端末の移動機能などで使われる目次。
    メニューバーの「Tools」→「Table Of Contents」→「Generate Table Of Contents…」から作成できる。 
  • HTML目次の作成
    ページとして表示される目次。
    メニューバーの「Tools」→「Table Of Contents」→「Create HTML Table Of Contents」から作成できる。
    CSSの読み込みなどの修正は最後にやるのが無難。(途中で目次が変更になった場合やり直しになるので)
  • 改ページ
    <mbp:pagebreak/>というタグでできるらしいけど、sigilがそんなの知らないということで消してしまう。(xmlnsを書いてもダメだった。)
    代わりに、CSSでpage-break-after: always;を指定すると、その要素の後ろで改ページしてくれる。
    HTMLが別ファイルになれば、そこでも改ページされる。
  • 落ちる
    0.6.2はダメだったので、Downloadsから0.6.1を入れて使ったら、落ちることはなくなりました。(僕の環境はOS X Lionです。)
  • 選択範囲がおかしくなる
    なります。我慢です。
    プログラミングの本に関しては、フォーマットも凝る必要はないし、見出し・本文・コード・画像・引用と、必要なパターンも決まってるので、良い感じのオーサリングツールが出てくるんじゃないかと思います。それまでの辛抱です。

Kindle Previewerに注意

ePubをKindleで使われるmobi形式に変換、エミュレータで表示までしてくれるありがたいツール、それがKindle Previewerです。Amazon.co.jp:Kindle ダイレクト・パブリッシング:ヘルプ からダウンロードできます。(日本での名称はKindleプレビューツール)
※ 変換は同梱されているKindleGenが行います。というわけで、コマンドラインでやりたい人以外はKindleGen単体のダウンロードは不要です。

僕の使ったVersion: 2.751は、font-family: monospace;を解釈してくれなかったり、KDPのサイトで提出時に変換されるファイルとfont-sizeが違ったり…と結構くせがありました。
あと、TideSDK/TideSDK · GitHubとかで使われている「·」が文字化けしてaになりました。これはPreviewerの問題ではなく、実機でもなるのかもしれません。

そしてコンパイルにそれなりに時間がかかるので、修正・確認のサイクルがげんなりしてきます。

と、いろいろ書きましたが、いちいち実機に転送することを思えばはるかに楽ができるので、これなしではやってられません。今後のさらなる進化に期待します。

提出から出版までの時間

1/14の18時に提出して、翌日1/15の16時45分に出版されました。
Appleのレビュー速度と比較すると半端ない早さです。

ただ、出版されましたメール内のリンクが.comのサイトになってたり、KDPのサイトから書籍のページに飛ぶ方法がよくわからなかったり(未だにわからない。Kindleストアを検索する方がはやい。)、まだ荒削りですw

税金の手続きがめんどい

書類を出さないとアメリカで源泉徴収されるので二重課税になります。(昔のApp Storeと同様の手続きが必要。僕はまだやってません。Web上で完結するようにならないかなぁ。)

手続方法(不備があるらしいので、実際にやる前に他のサイトも参照することをお勧めします。)
Amazon.co.jp:Kindle ダイレクト・パブリッシング:ヘルプ

本を書くのは勉強にいいかも

ブログの記事なら、「〜についてはよくわかりませんでした^^」ですませるところですが、「あかん、もっと調べないと」という思いが襲ってきます。

例えば今回、App Storeへの提出は現状難しい、というデメリットを書いたんですが、難しいって書くからにはそれなりに裏を取らないと…ってなりました。

それでも間違ってたらごめんなさい。

広告モデルの本もあっていいんじゃないか

最後の最後、これは売るほどのものなのか…?という激しい葛藤がやってきました。

僕みたいなチキンな著者向けに、広告とか、あとから課金とか、読者が値段を決めれるとか、そういう電子書籍ならではの売り方ができてもいいんじゃないかと思いました。

Kindleが変えたのは出版であって執筆じゃないよ

確かに、コネもなにもない矮小な僕でもAmazonに本を並べられるようになりましたが、書く作業自体は何も楽になってません。むしろ手続きとか校正とか自分でやらなきゃいけないので、手間が増えているのかも知れません。

というわけで、「2〜3時間とかそんなんでできるわけじゃないよ」と、年始に軽い気持ちで始めた過去の自分に突っ込みを入れたいです。

“コード”より、“コンテンツ”を生み出す

いきなりまじめになりますが、今年というかこれからの僕の個人活動について。

皆さんは、以下の記事を読まれたでしょうか?
日米で半年ニートをするまで気付かなかった、「お金・理念・コード」より大切なこと【連載:上杉周作⑤】 – エンジニアtype

僕は以下の部分にとても衝撃を受けて、未だに頭のなかで鐘が鳴り響いている感じです。

エンジニアにとって、「コードを書くか、もしくは記事やスライドなどのコンテンツを作るか」は永遠の二択問題だ。

中略

1. 自分に影響を与えたエンジニアを何人か思い浮かべる。
2. どのようにして自分がその人から影響を受けたかを考える。
3. その人の素晴らしいコードに影響されたならコードを書く。反対に、その人の素晴らしいコンテンツに影響されたならコンテンツを作ればいい。

この二択は確かに僕の中にもあって、その時々の気分でコードを書いたり、入門記事を書いてみたりしてたんですが、この解決方法の発想はなかったなぁ、と。
これの基準で考えると、完全に僕はコンテンツを作るべき。
Encode.pmのコードは読んだことはないけど、404 Blog Not Foundは大好きだ。Matzさん、結城浩さん、amachangさん…影響を受けた人はたくさんいるけど、彼らの書くコードより文章から受けた影響の方が大きい。

というわけで、しばらくはものを作るためにコードを書く作業より、コンテンツを作るためにコードを書く作業を優先しようと思っています。

勢い余ってブログのタイトルもKindle JUNEとかにしようと思ったけど、そんなダジャレはもう誰かが言ってそうだし、Amazonアソシエイトから怒られそうな気がしたのでやめました。

そんなこんなで、いつもどおりグダグダですが、本年もよろしくお願いいたしますm(_ _)m

1 2 Scroll to top