ゆゆ式 原作アニメ比較
(この記事はゆゆ式 Advent Calendar 5日目の記事です。)
はじめまして/こんにちは @spring_raining です。
ゆゆ式、最高ですね。
ゆゆ式という深遠なるテーマの前には、世の中の争いや憎しみなど本当に些末なものです。
OUCCの部室について
(この記事はOUCC Advent Calendar 2014 2日目の記事です。 昨日は@susisu2413さんによる非実用 say コマンドでした。)
こんにちは、@spring_rainingです。OUCC Advent Calendar 2014 2日目の記事は、OUCCの部室についてお送りしたいと思います。
OUCCの部室
は、大学の外にあります。大学の外にあるので、24時間365日滞在し放題です。
しかし、部室が学外にあることを伝えると、「なにやら怪しいことをしているサークルなのではないか」という誤解を与えてしまうことが時たまあります。 このエントリによって、部室の紹介を通してOUCCの内情を少しでも知ってもらえたらと思います。
設備
部室はこの建物の3階で、外観はやや広いプレハブ小屋といった感じです。この中に、キッチン・布団・コタツ・扇風機・酒・PC・プリンタ・技術書・ゲーム・漫画・ボードゲームといった各種生活必需品が備わっています。
冷蔵庫
布団です。だいたい週末には何人か転がっている。
雀卓は2卓立ちます。
ボードゲームと漫画
PCはただいま故障中です。
ゲームはPS3, Xbox360, WiiU, SFCなどが備わっています。
勉強会の様子です pic.twitter.com/SvEStzJfQI
— 緑豆はるさめ (@spring_raining) 2014, 11月 22
最近プロジェクターが導入されたので、各種勉強会・上映会が大画面でできます。
メリット
この部室によって、
- 各種遊び道具使い放題
- 終電を逃しても泊まれる
- 夏と冬、有明からの怪しいブツを実家に届けずに済む
などのメリットが享受できます。しかし、本当に部室が使えることのメリットはこれだけなのでしょうか?
あつまりの場としての部室
実際に部室に来てみればお分かりになると思いますが、部室ではめいめいが思い思いの活動をしています。
最近は大体PC・麻雀・TCG・ゲームなどをやってる人が多いけれど、来る者は拒まず、去る者は追わず、人が集まっているとはいえ部室で特別決まった会話をすることはありません。誰かと話したい時は会話をし、一人でいたい時は会話をしません。
このような場所は、探してみると意外と見つからないと思います。
- - - -
基本的に、大学生は中学や高校に比べてしがらみが無く自由であるため、いわゆるコミュ障である僕が大学で過ごすのは、本来は快適なものです。
しかし残念ながら不本意ながら、僕の実感としては、他人との関わりが全くない大学生が無事に大学を卒業する事は、さまざまな理由から困難であるのが実情です。真のぼっちは大学生活では致命傷なのです。
OUCCには、大学生活を快適に送る手助けをする保証はありませんが、少なくとも手助けの場はあります。 少ないながらも過去問のストックもあります。
コミュ障もぼっちもギークも単位ヤバい人も、あるいはそうでない人も、ぜひOUCCに遊びに来てください。 あらゆるコミュニケーションを放棄できるこの生温い空間を、あなたは気に入ることでしょう。 お待ちしています。
はてなサマーインターンに参加してきました(写真多めで)
以前の日記に書いたとおり、8月11日から9月5日までの間行われたはてなサマーインターンに参加したので、インターンでの出来事や感想について書きたいと思います。
はてなサマーインターンの内容については、インターンに参加した他の方々が素晴らしいエントリを発表されているので、このエントリでは文章はほどほどに写真多めでお送りいたします。
はてなインターンについて
はてなインターンは京都にある本社にて行われるので、インターン生は期間中自宅もしくは近くのホテルから本社に向かいます。
僕の自宅はギリギリ京都まで通える所にありますが、毎日長時間通勤するのは辛かろうとのことで、はてなの方に期間中ホテルを手配していただきました。太っ腹です。
最高の昼食
はてなでは毎日手作りの昼ご飯が振る舞われ、無料で食べることができます。
金曜日はカレーです
毎日健康的な食事を摂ることができ、顔のニキビも若干治りました。
もっとはてなのまかないの写真を見ておなかを空かせたい方はこちらをどうぞ。
インターン前半
はてなインターンでは前半2週間でWebサービスについての講義や実習を行い、後半2週間では実際にはてなのサービスの開発を行います。
前半の講義で学ぶことはPerl、データベース(MySQL)、JavaScript、iOSアプリ開発(Objective-C)と盛りだくさんですが、プログラミングについてだけではなく、以下のようにWebサービスを立案するためのワークショップなども行いました。
まず新しい機能のアイディアを3分でたくさん付箋に書き出していき、
その中でビビッと来たものをテンプレートに収まるようにまとめていきます。
そして、そのアイディアについて30秒で他のインターン生に発表していき、意見をもらいます。(エレベーターピッチと言うそうです)
もらった意見を元に最終的に作る機能を1つ選んだら、紙に実際に作るサイトの大まかな構成を書いていきます。(ペーパープロトタイピングと言うそうです)
ペーパープロトタイプが出来上がったら、今までの実習で作成してきたブログサービスを改造して、独自のブログサービスを作ります。
そして出来上がったのはこんな感じのブログ
このブログサービスは、コンセプトを引き継いでTumblrテーマとして公開しています。よければご利用ください。
背景に画像がでっかく表示されるTumblrテーマを作りました。 - harusamex.blog
ありがたいことに、このブログは社内投票によって最優秀賞に選ばれ、はてなTシャツとPressoマグカップをいただきました。
個人でWebサービス開発のためのプログラミングだけでなく、テストや機能立案の方法まで勉強することはそう出来ることではないので、本当に貴重な経験でした。
インターン後半
後半ははてなブックマークチームに配属され、id:doughnutomoさんとはてなブックマークの新機能開発に取りかかりました。
インターンといえども、本当に利用されているサービスに手を加えることになるため、当然本番運用されているソースコードを見ることになります。
詳細は述べませんが、はてなブックマークのあんなソースやこんなソースが丸見えであり、今日はどんな機能を入れてやろうがグヘヘといやらしい笑みを浮かべながら毎日コードを書くことができました。(言うまでもないですが、全てのコードは社員の方の厳しいレビューにより品質が保たれています)
息抜きは大事
今回自分の力不足のため、残念ながら期間中に新機能をリリースすることは出来ませんでした。しかし、最終日に行った新機能のプレゼンテーションでは良い反応を頂き、社内投票では2位にまで上り詰めることが出来ました。
今回開発をはじめた機能は、はてなブックマークチームの方々が開発を継続するとのことですので、後日リリースされるかも?しれません。
はてなブックマーク、ご期待ください。
追記(9/30)
本日はてなブックマーク公式ブログにて、新機能『「あとで読む」機能』が正式に発表されました!
「あとで読む」機能を追加しました。タグ「あとで読む」または「後で読む」を付けてブックマークした記事のうち、未読の記事を一覧で確認できます - はてなブックマーク開発ブログ
この機能、個人的には通知される曜日・時間が指定できる点がミソであると思っています。 毎日朝に読んだり、休日の昼にまとめて読んだり、いろいろな使い方ができるので、ぜひ自分の生活サイクルに合わせてご利用ください!
まとめ
最終日のTGIF
1ヶ月という期間の長いインターンシップでしたが、終わってみればあっという間でした。期間中はメンターや社員がつきっきりでバックアップしていただけるため、とても安心してコーディングすることが出来ました。本当にお世話になりました!
はてなサマーインターンでは、Webサービスの作り方についてプロフェッショナルに教えてもらえて、交通費宿泊費昼食代全部無料で、後半課程に進めば10万円の給料までもらえるので参加しない手はありません。興味のある方は来年ぜひ参加しましょう!!
↓↓↓他インターン生の素晴らしいエントリはこちらです↓↓↓
「はてなインターン」という革命について - どーなつの連続性定理
はてなインターンに参加してクレジットカードを作ってアイロンを買った話 - あんパン
CoffeeScriptファイルどうやって分けるか問題
追記
お恥ずかしい限りですが、この記事はWebpackやBrowserify等、複数のJavaScriptやCoffeeScriptなどのファイルをまとめるツールが世にあることを知らない頃に書いた記事となっています。以前の内容も参考までに掲載しますが、多くのケースではこれらのツールを使って管理をする方が得策でしょう。
今開発しているアプリケーションのCoffeeScriptファイルが500行を越えてしまい、そろそろファイルを分割しておかなければならない気配がしたので、ここ数日でCoffeeScriptファイルをどうやって分割するか方針を考えていました。
ネット上を探すと、おおよそ3つの手法に分かれていたような気がします。
1. クラス名の先頭にwindow.
を付けて、htmlからコンパイルしたjsファイルを全て読み込む
すぐに分かる CoffeeScript によるクラスの書き方 | Developers.IO
このサイトを参考にしました。
つまり、全てのクラスをwindow.Foo
、window.Bar
という感じにwindow
のプロパティにしておいて、html側で
<script src="js/foo.js"></script> <script src="js/bar.js"></script>
とまとめて読み込む方法です。
利点
- 一番楽そう
欠点
- ファイルが増えたときにいちいちhtmlファイルに書き込まなければならない
- htmlファイルの読み込み順を考えなければならない
- クラスを入れ子にする場合、先に親クラスを定義する必要がある
2. require.jsを使う
jsファイルは別々にコンパイルしておくが、RequireJSというライブラリを用いてそれぞれのjsファイルを動的に読み込むという方法です。
利点
require
という関数を用いて、簡単に別のjsファイルを読み込むことができ、依存関係も分かりやすい- 不必要なjsファイルを読み込むことがない
欠点
- ライブラリを用いるため、学習コストが上がる
- jsファイルの読み込み順を指定できない
- require.jsに関連する問題が発生した時に解決が大変そう
3. 複数のCoffeeScriptファイルをまとめて1つのjsファイルにコンパイルする
coffee --join
やCakefile
を用いて、複数のCoffeeScriptファイルを1つのjsファイルにコンパイルする方法です。ただしCoffeeScript 1.8からはcoffee --join
はdepricatedになったようです*1。
利点
- 1.の案からhtmlに書き込む手間がなくなる
window.
は必要なくなる
欠点
- Cakefileを書く手間
- CoffeeScriptファイルの接続順を考えなければならない
- クラスを入れ子にする場合、先に親クラスを定義する必要がある
3つの案のうち、最初は2.にしようと考えていましたが、開発するアプリケーションがシングルページのため、jsファイルを非同期で読み込むメリットが薄そうだったので、結局3.の方法を使うことにしました。
参考:RequireJSをプロジェクトで使ってみての所感 - ダーシマ・ヱンヂニヤリング
結局どうしたか
以下のようなCakefileを書いてcake
することで複数のCoffeeScriptファイルをまとめることに成功しました。
jsDir以下のCoffeeScriptファイルをまとめてdestFileにコンパイルするやつ
長くなってしまいましたが、大まかに説明すると、jsDir
以下のディレクトリのうち、ignoreDirs
を除いたものからCoffeeScriptファイルを探して、それらのCoffeeScriptファイルをいい感じに接続したものをdestFile + '.coffee'
に保存した後、そのファイルを同名のjsファイルにコンパイルするというのを行っています。
例えば、以下のようなファイル構成とします。
app ├── index.html ├── Cakefile └── js ├── lib │ └── someLibrary.coffee ├── foo │ ├── bar.coffee │ └── hoge.fuga.coffee └── one.two └── threeFour.coffee
このとき、各ファイルの内容は
# js/foo/bar.coffee class Foo.Bar : # js/foo/hoge.fuga.coffee class Foo.Hoge.Fuga : # js/one.two/threeFour.coffee class One.Two.ThreeFour :
のようなクラスが書かれているものとします。
ここでcake build
を行うと、js/
以下のうちlib/
を除いたbar.coffee
、hoge.fuga.coffee
、three.coffee
を連結したものがjs/main.coffee
に保存されます。
ただ、このままでは親クラスを定義しないでいきなり子クラスを書き始めることになるので、js/main.coffee
の先頭にはディレクトリ構成に応じて何行かコードが自動的に挿入されて名前空間の確保を行います。
上の例では、
Foo = {} unless Foo? Foo.Bar = {} unless Foo.Bar? Foo.Hoge = {} unless Foo.Hoge? Foo.Hoge.Fuga = {} unless Foo.Hoge.Fuga? One = {} unless One? One.Two = {} unless One.Two? One.Two.ThreeFour = {} unless One.Two.ThreeFour?
がjs/main.coffee
の先頭に入ります。これにより、各ファイルのクラスは問題なく宣言・参照することができます。
その後js/main.coffee
はjs/main.js
にコンパイルされるので、html側からは
<script src="js/main.js"></script>
で読み込むことで1つにコンパイルされたjsファイルを使うことができます。
Cakefile参考資料
Cakefileについては、
CoffeeScript付属の軽量ビルドツールcakeを使ってみる - SELECT * FROM life;
が参考になりました。あと、Cakefileのテンプレートとして
GitHub - twilson63/cakefile-template: This is a cakefile template for coffeescript, docco and mocha
を使いました。