from __future__ import katryo

カリフォルニア州マウンテンビュー在住のソフトウェアエンジニアがいろいろ書きます。

Denkinovel iOSアプリのリリース

DenkinovelのiOSアプリをリリースした。

リリースしたのは8月だ。そういえばブログでこのことを発表していないことに気づいたので、いま慌てて書いている。

改めて紹介すると、Denkinovelは小説投稿サービスだ。音楽・画像の演出のある小説を投稿できる。端的にいうと、ノベルゲーム風の小説が作成できる。

DenkinovelのWebサイト http://denkinovel.com/ を見てもらったほうが話が早いので説明は以上に留める。

どうしてDenkinovelを作ったか? をまとめたスライドも用意した。気になる方はこちらに目を通してほしい。

Denkinovel iOSアプリのインストールはこちらから https://itunes.apple.com/jp/app/denkinovel/id1000108250?l=ja&ls=1&mt=8

#Rubyhiroba で発表してきた

これ。もう一ヶ月前のことになる。 http://rubyhiroba.org/2014/presentation.html

「Rails3で作り始めたアプリケーションをちょっとずつ改善してゆく道のり」を発表してきた。

この発表、Denkinovelの紹介部分は情報科学若手の会で話した部分をそのまま流用している。当初、若手の会でもRailsでの実装部分を説明しようと思っていたのだが、発表時間も短かったうえ、若手の会にはRailsやってない人が多そうなので断念した。上記のRubyhirobaの発表はその削った部分も大幅に投入したものだ。

Denkinovelの実装についてちゃんと公開したのはRubyhirobaが初めてで、ノベル作成からJSON変換までをどう表現すればわかりやすいかなど悩んだ。

BackboneとかAngularとか、JSのフレームワークはSPAの文脈で説明されることが多いけど、アプリケーション全体のSPAではなく単に遷移なしでのリッチな表現のために使う機会のほうが多いと思う。

Denkinovelの知見が他のWebアプリ開発に役だってくれればありがたい。

興味を抱いたこと

id:joker1007 さんの、RailsからSprocketsを投げ捨てる話が興味深かった。

これ。

僕自身、Railsアプリを開発してるとフロントエンドをすべてSprocketsで管理するのが煩わしく感じてきている。

joker1007さんの意見、RailsのSprocketsを捨てるべき、という意見、かなりうなずける。

なぜこの意見に僕が賛成しているのか、まとめてみた。

なぜSprocketsを捨てるべきなのか

npm, Bower, WebPack, grunt, gulpなど、最近のWeb開発ツールはだいたいNodeで動く。Web開発の環境を整えたり、フロントエンドの管理をするのはNodeにやらせるのがこの数年の主流だ。

フロントエンドはJSの領域で、RubyPythonも手出しできない。だから、JSファイルを結合させたり、依存関係を整理したりするのはサーバサイドJSであるNodeにやらせるのがよいと思っている。

RackのライブラリでしかないSprocketsと、Webアプリケーションには必須の言語であるJavaScriptで作られたgulp, gruntでは、利用される頻度が違う。JavaScript製のツールは、Webデザイナーも、非Rubyプログラマも使うのだ。

そして、こっちがより大きな理由なのだが、sprockets、わけわからんことを勝手にやってくれて、それを理解していないせいで不具合を解決できなかったりする。

わけわからんお節介のせいでSprocketsの挙動を調べるのがイヤだから、Sprocketsを捨てたい。なんで挙動を調べたくないかというと、Sprockets、静的ファイルの名前にハッシュ値を与えたり、JSの依存関係をもとに合体させたり、役割が複数あって無駄に大きい。

その点、複数の小さな部品を組み合わせて作っているgruntとかのほうが理解しやすい。UNIX哲学は偉大だ。

ということで、そろそろフロントエンドはRailsの手から放してやるべきなのだと思う。

turbolinksとか誰も使ってへんやろ?

2013年をまとめた結果wwwwww

今年もまとめエントリの季節がやってきた。2013年をまとめよう。

1月

就職活動してた気がする。

2月

就職活動を終えた記憶がある。

3月

フィリピンに語学留学してた。フィリピンの海きれい。

4月

えーと。

5月

何してたっけ……。

あっ。

Denkinovelのアップデート履歴を見たところ、4・5月は頻繁に更新していた。それまでほぼjQueryのみで、フレームワークなしで頑張っていた画像・BGM切り替えをBackbone.jsでやるようにして、pushStateを使ってページごとにURLを与えるようにしたんだった。

6月

売春・児童ポルノ防止法の改正案の陳情書を書いたりしてた。このときちょっとだけやりとりした宮崎謙介議員とあとで(12月に)会ったりした。

7月

蒼穹のファフナーを全話見た。あれは面白かった。来年はEXODUSの披露会があるらしいのでいまのうちに全話見よう。

やりたいことが多すぎると7月の記事においてかとりょーは主張している。そして12月31日現在でもこの状況はほぼ変化していない。変わったのはEver17をクリアしたことくらいだ。

あと北海道で研究発表をした。北海道きれいだった。

8月

京都大学で楽しく表現規制に反対する会 KUSACを作って、Denkinovelに機能追加していた。

どうやら研究について考えていたらしい。このときはまだタスクを多く含むページを探すことを目的にしていた。

コミケと筑波行ってきた

9月

ウッ、記憶が。

10月

Ever17をクリアした

あとDenkinovelの開発のためにも小説投稿サイトの比較記事を書いた。

11月

イギリスに行った。ロンドンからダラム、ニューキャッスル、スコットランドの首都のエディンバラに行った。

あと11月祭で講演会を主催した。

12月

研究してる。

はぐれ学生アドベントカレンダーの記事を書いたりした。

現実逃避アドベントカレンダー機械学習について書いた。

未来について

修論を提出したら

  • Kindleに入れたノンフィクション全部読み終える
  • Steins;Gateをやり終える
  • Last of USをクリアする
  • Denkinovelの開発再開
  • Perl覚える

あたりやりたい。

来年は東京(渋谷の近く)に住む予定。みんなよろしく。

かとりょークロニクル または私は如何にして学部就職するのを止めてコードを愛するようになったか

本記事は「はぐれ学生Advent Calendar 2013」という企画のひとつです。 本企画では「はぐれ学生」とは、大学などの学校を中退、休学、留年した方、また、仮面浪人やちょっと変わった進路を選んだ方などを指すことにします。

1日前、12/4の記事はid:gfx さんのはぐれ学生だった話から飛んでグダグダ語るです

かとりょーです。留年 → 専門を変えて大学院進学 という経歴と、プログラミングについて書きます。

はぐれ学生となった経緯

  1. 京都大学の農学部に入学
  2. ゲーム作ってたら留年する
  3. 就活の最中に就職するのがイヤになる
  4. 京都大学大学院の情報学研究科に進学する

こういうことがあった。以下に詳細を記す。

詳細な経緯

農学部に入学

2007年に京都大学農学部地域環境工学科に入学した。理系だけど女子の割合が高い(30%くらい)ので農学部を選んだ。

なお京都大学の農学部の入試はかなり特殊な方式を採っている。受験者は農学部内の6つの学科から第1〜第3希望までを選ぶ。採点時、成績のいい順番に受験者を並べ、第一志望から、空きがあったら入れていく。つまり、成績がいいと第一希望学科に入れるが、中途半端な成績だと第三希望の学科に入ることになる。僕は中途半端な成績だった。

入ってから知ったことだが地域環境工学科はつまり農業工学科だった。材料力学や流体力学の講義・実験を受けたりする。面白くなかったのであまり授業には出なかった。小説を書いたりしていた。

京大の農学部を受験する人にアドバイスする。ぜひとも各学科について調べておいてほしい。僕の場合は第一志望と第二志望についてはちょっと調べたが、第三志望に入ることはないと高をくくっていたから失敗した。

あと、教職の授業を取って、教育実習にも行ったりした。大いに時間を浪費した気がするが、教育実習で得たものもそれなりにある。もしもう一度同じ人生を辿るとして、またやりたいとは思わないがまったく無駄ではなかった。でも教員にならない人は教職取らないほうがいいよ。

ゲーム作ってたら留年した

高校の頃からの友達とノベルゲームを作っていたら、あまり単位を取れていなくて、ちょうどいいから留年した。

ちなみにこのとき作ったゲームがこれ。僕がシナリオと演出とスクリプトとほか色々を担当した。つまり絵と音楽以外やった。

ゲーム中のシーンがこんなの。左の人がヒロインで右の人が主人公。 ev58d

アナテマ・フィジクス」というタイトルで、一本道ノベルゲーム。ゲームというより豪華な小説に近い。

キャラクターデザインは市町村さん。クリーチャーデザインはローグライクゲーム変愚蛮怒をメンテしてたりもするdeskullさん(deskulさんのサイトこちら)。音楽は古くからの友人の。こいつはプロの作曲家になっててCROSSxBEATSとかいうカプコンの音ゲーに音楽を提供したりしている。フリーの作曲家なので音楽や効果音が必要なときは依頼するとよい。吟のSoundCloudはこちら

アナテマ・フィジクスはWindows向けで無料ダウンロードできるからぜひプレイしてね!

この頃に株式会社はてなで広告・営業のアルバイトを始めた。ちなみにプログラミングはまったくしていない。エディタの起動さえしていない。同僚のみなさまにはお世話になりました。

就活イヤになって大学院に進学する

2010年の秋、意識を高めて某コンサルティング会社の面接を受けているときに、働くのがイヤになって大学院に進学することを決めた。

アルバイトをしていたはてなのようなWebの会社がとても面白く感じたのでコンピュータサイエンス(以下CSと表記)を学ぼうと思った。あとで考えたらWebのサービスを提供することとCSは直結しないのだけど、CSはCSで学ぶと面白いので結果的によい選択だったと思う。加えてCSの学科にはコードを書く人や性格的に馬があう人が多い。

夏に院試があるので、それまでに情報系の授業にもぐりこんだり院試の過去問を人づてにもらったりして勉強することにした。このとき、Twitterの、知り合いのような知り合いでもないような薄い人間関係がとても役に立った。

院試に合格して第一志望の研究室に入れた。ちなみにこのあと東大の似たような研究室の冬期院試も受けたが落ちた。受験者で一番成績が悪かったと思う。

追記:みんなの意識よ高まれ

大学生・高校生くらいの人にアドバイスをしたい。学部生のうち、できれば2年生くらいのあいだに一度は意識を高めることをオススメする。いろんなハイコンシャスなイベント(ビジネスコンテストとかIVSワークショップとか)に出席すると、色々な知見を得られる。具体的には一見すごそうに見える人も案外普通の人間だということがわかったりする。たいしたことがない、というか、やるべきことを普通にやっているだけで、特別すごい才能や生い立ちがあるわけじゃない。自分とそれほど違いが無いことに気づける。

学部3年生くらいになると忙しくなって意識を高める余裕がなくなるだろうけどその頃にはもう高意識は不要になっているはずだ。自分が本当にやりたいことを見つけているかもしれない。そのときに、「すごそうに見える人も普通のことをしているだけなんだな」という気づきを覚えていてほしい。すごそうなあの人も自分もたいした違いはないんだから、やるべきことをやっていれば目標に近づいていける。そんな風に考えてほしい。

まとめると、自分を安く値踏みしないでほしい。

京大大学院情報学研究科に入る

2012年、大学院に入学する直前にプログラミングを始めた。

まずRailsの勉強を始めた。Rubyのオブジェクトとかアトリビュートとか学ぶ前にRailsから始めた。いま考えるとひどいと思う。なお最初はWindowsでやろうとしたが地獄が待ち構えていることを予感してUbuntuでやることにした。RailsによるアジャイルWebアプリケーション開発 第4版を写経して、Webの情報を組み合わせてTwitter連携アプリケーションを作ったりした。

情報検索の研究室に入って、講義を受けたり夏休みにVOYAGE GROUPというWebの会社に3週間のインターンシップに行ったりした。(インターンシップについて書いた記事はこちら

あとDenkinovelという、ノベルゲームのような、簡単に音楽と映像と効果音で演出できる小説投稿サイトを作った。小説を書く人、読む人はぜひ来てほしい。いまiOS向けアプリを作っているのでお楽しみに。Denkinovelローンチ時の記事はこちら

プログラミング楽しい。もっと早く始めたかった。大学入学くらいの時期にMacBookを買ってHelloWorldすべきだった。

コードを書ける職を探したり研究したりしているうちにすごい速さで時間が経ってあと三ヶ月で修了という時期になった。

現在の状況

いまは大学院修了のために研究をしている。研究テーマは「タスク検索」。「あるタスクを遂行するために、なにをすればいいか」を直接検索する手法を提案する。提案しようとしている。提案できたらいいな。

研究はけっこうつらい。Excel for Macでタンポポめいた作業を続けている。タンポポのくせにクラウドソーシングもできない仕事なのでしかたなく自分一人でググってはExcelに評価を書き込むという手順を繰り返している。

(´・_・`)

なお来年から東京でプログラマとして働く予定なので近くにいるみなさんよろしくおねがいします。

まとめ

「自分が何を好きになるか」は意外と予想できない。10年20年生きてきてもわからなかったりする。僕はわからなかった。後悔している。

なので。

好きなことを見つけるためにどんどん色々なことに手を出すべき。特にプログラミングに手を出すべき。

コードを書くことが好きになれるかどうかは性格という名の才能だ。プログラミングが好きになれる才能があるのにコードを書かないのはもったいない。

ということでこの記事を読んだコードを書いたことない人にはぜひプログラミングを始めてほしい。HerokuでWebアプリケーションを動かしたりTwitter botを運営したりするといいと思う。言語はRubyPythonがおすすめ(ただしPythonは2と3で断絶があるのと日本語資料が少なめなのが難点)。かっちょいいWebサイト作りたい人はJavaScriptから入ってもいい。むしろWebデザインから始めてもいい。

Windows使ってる人はVirtualBoxVMwareを使ってLinuxUbuntuあたりを入れよう。エディタはSublime Textを使おう。VimとかEなんとかは最初は無視していい。

えーと。

とにかく。

みんな、ありがとう!!!!!!!!!!

追記

タイトルのクロニクルの元ネタは高校生が超能力者になって色々する映画のクロニクルです。けして村上春樹ではないのです。クロニクル、シアトルの高校生の話なのに主人公たちに共感してしまう。とてもよい映画なのでみんな見よう。

小説投稿サイト(小説家になろう、星空文庫、Eエブリスタ、CRUNCH MAGAZINE、Denkinovel)の比較

Some Books by benobryan

 Denkinovelの開発を再開した。参考のため、ほかの色々な小説投稿サイトに同じ小説を投稿して、その使い勝手やユーザーの反応、そもそもユーザーが何のために小説投稿サイトを利用するのか、などを考えた。

 以下、それぞれの特徴を解説する。

5つの投稿サイト

以下5つの小説投稿サイトに同じ小説を投稿した。Denkinovelだけは音楽と画像の演出ありバージョンだ。

ほかにArcadiaなどあるみたいだけどめんどくなった。

投稿した小説はアナテマ・フィジクス。もともとノベルゲームだったものを小説向けに書き直している。

ev58d

ちなみにこんなビジュアル。

各小説投稿サイトを使ってみての感想

Denkinovel

 いまのDenkinovelに足りないものをリストアップする。

  • アクセス解析
  • 「あなたが次に読むべき作品」レコメンド
  • お気に入り機能
  • 通知機能

 アクセス解析なのだけど、もしかしてユーザーがGoogle Analyticsを仕込めるようにすれば解決するかもしれない。

動く小説投稿サイトDenkinovel

小説家になろう

 小説のみ投稿サイトでは最大手。古くから運営しているだけあって高機能。で、かつ画面遷移やURL設計に古くさいものを感じる。Yahoo! Japanみたいに、いかにも昔ながらな設計で、それでいながらユーザー人気が非常に高い。「変わらないこと」の強さがある。

 投稿の際に設定する項目が多い。入れるべきキーワード(タグ)をおすすめしてきて、「キーワードに『男主人公』を追加するだけでも読者にとっては大切な情報です」となろうの流儀を教えてくれる。

 ランキング上位の作品は似たようなジャンルで似たような展開ばかりなので、真ん中くらいに順位の作品がいちばん面白い、という話を聞いたことがある。なろう内部でのネットワークのせいで、他ユーザーと頻繁に交流する作者の、最大公約数的テーマの作品が上位に来やすいのだとか。

小説家になろう

星空文庫

 画面がシンプル。ユーザーが迷わないよう、UIが考えてある。機能は少なめ。

 ユーザーがGoogle Analyticsをページ内に仕込める。これにより、リアルタイム解析で現在ページを見ているユーザ数を見てフヒヒッと笑みを浮かべることができる。

星空文庫

Eエブリスタ

携帯小説の流れをくむサイト。読者を含めたユーザー数770万人。

リーダー画面の構成が綺麗でシンプル。文章を読むのに集中できる。ただ、そのぶん一ページに表示される文章量が少なく、早く読みたい人にとってはイラつく。もともとガラケーサイトだったので、URL構造など古い感覚がある。スマートフォンで読む人が多そう。

Eエブリスタ

CRUNCH MAGAZINE

 小説投稿サイトというより交流サイト。投稿機能はおまけ。文フリにブースを出すような文芸の人が多い。

 できたばっかりなのでユーザーはまだ少数。今後に期待。

 小説のレコメンドにユーザーごとの読書履歴といいね履歴を使っている。いいね機能を多用するユーザーだと精度の高いレコメンドができるようになると思う。

 詳細は不明だが、レコメンドの素性に、本文を解析したものも使っているらしい。単純に、特定の単語の出現頻度だとうまくいかなさそうだから、ひらがな・カタカナ・漢字の割合、体言止めの頻度あたりを使ってると思う。でも正直なところ、小説のカテゴリタグといいね、そして作者を素性にするだけのほうが性能高い気がする。

 メニューアイテムにマウスオーバーすると出てくるツールチップのヘルプが便利。Denkinovelでも真似しようと思う。

CRUNCH MAGAZINE

まとめ

動く小説投稿サイトDenkinovel、よろしくね☆

動く小説投稿サイトDenkinovel

京大で楽しく表現規制に反対する会とDenkinovel

Denkinovel

Denkinovelにちょこっと機能を追加した。ユーザーがアップロードできるファイルサイズの制限を変えられるようにした。

とあるユーザーが、音楽アップロードを50MBぎりぎりまで積み上げてしまい、これ以上投稿できなくなったのでどうにかしてほしいという相談を受けたことがきっかけで、この機能を作ることになった。

通常は50MBまでだが、頼まれれば200MBまで限界を上げられる。もしDenkinovelにより多くの音楽をアップロードしたいなら、ぜひ相談してほしい。

京大で楽しく表現規制に反対する会

設立の経緯

最近、自民党・公明党・維新の会が提出した児童ポルノ・売春防止法改定案を筆頭に、表現規制を推進しようという警察・検察・国会議員の圧力が強まっている。表現規制が進むと困るので、僕は数名の京大生と一緒に「京大で楽しく表現規制に反対する会」というのを作った。

こういうサイトを作って、 ブログも開設した。

しかし僕は修士2回生。修了のためにも論文を書かねばならない。そしてこの一ヶ月はSACの論文投稿でとても忙しくなる。はやいとこ後輩に責務を譲りたい。実のところ、あてにしている後輩が期末試験で忙しいので、しかたなく僕がブログ更新やサイト開設をやっているだけなのだ。

主旨

この会の基本的な主旨は、京都大学の創作サークル同士で連絡を取り合って、表現規制に関心のある人をつなげて、味方をつくることだ。

あたりの人に声をかけている。機会があったらほかの表現規制反対の団体や別の大学にも交流を広げる。学園祭には法学者や有名人を呼んで講演を開く。そうして、来年も、再来年も、ずっと活動が続く会にしたい。

ところで意外なことに、創作サークルに入っていても表現規制問題に関心のある人は少ない。みんな人の話を聞かないし、ググらない。ちょっとこれは困るので、どうしようか考えている。

表現規制問題に関心のある人を増やす方法

京大生なら、クスノキ前で拡声器を持って労働問題を叫ぶ人を見たことがあるだろう。彼らの話す内容をまともに聞いたことがあるだろうか?

僕はない。はっきり言うと、あのやり方はまずい。騒音で迷惑だし、お行儀の悪い集団に見える。ただ騒ぐだけでは聞いてもらえないんだ。悲しいことに。

不特定多数に呼びかけるのは非効率だ。たいていの人は、他人の困り事に興味がない。騒ぐ人は迷惑な人。迷惑な人はきっと悪い人。人類の多くはそういう思考をする。

だから、発想を変えよう。頭の働きそうな知り合いに、個人的に声をかけるのがいい。物語を作るやつならさらにいい。とにかく、知り合いから話をしてみる。それがいちばんの近道だと思う。

一発逆転について

勘違いしてる人が多いので書いておく。

表現規制問題に一発逆転はない。大勝利もない。大敗北もおそらくない。表現規制の問題は根深い。文明の発祥からそれは存在する。十年や二十年で解決する問題ではないことを理解してほしい。

気になる人は「悪書追放運動」や「紀伊国屋事件」あたりでググってほしい。手塚治虫の本も表現規制推進派によって焚書された。まあ「奇子」や「MW」みたいな作品を描く人だから、表現規制推進派に狙われるのも当然だとは思う。手塚治虫の絵はエロいし、物語はえげつない。たまーに手塚治虫のことを清廉潔白な聖人だと思い込んでいる人がいるけど、そいつらは彼のマンガを読んでないんだろう。

閑話休題。

表現規制は昨日今日始まった話ではない。焚書坑儒みたいな事件は2000年前にも200年後にもあるだろう。だから、気長に考えてほしい。