はてなサマーインターンに参加してきました(写真多めで)
以前の日記に書いたとおり、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
を使いました。
背景に画像がでっかく表示されるTumblrテーマを作りました。
僕はリブログモンキーです。なので、画像をたくさんリブログします。
しかし、今まで使っていたTumblrテーマではリブログした画像があまり大きく表示されず不満に感じていました。
そこで、これでもかというほど画像を大きく見せることができる新しいTumblrテーマ「Shiki」を作成しました。
使い方
「テーマの編集」ページのカスタムHTML欄にこちらのページのhtmlファイルを貼り付けてください。 ライセンスはCC BY 4.0です。
アホほど大きく表示される画像
Shikiでは画像を極限まで大きく見せるため、画面サイズいっぱいまで画像を拡大します。画面からはみ出てしまった部分はパララックススクロールを使ってできるだけ全体像が見えるように工夫しています。
オートページャー
オートページャー搭載で無限にスクロールできます。
実用例
名前の由来について
「Shiki」という名前の由来は、四季折々とかそういうのではなくゆゆ式が好きだからです。 2期まだですか
10万円で買いたいものリスト
8/11からはてなインターンシップに参加しています。
このインターンシップでは計10万円が支給されるそうなので、取らぬ狸の皮算用というわけで、10万円で買えるほしいものを随時追加していこうかなーと思います。
Trapcode Particular
¥46,650
Trapcode Particularとは、After Effectsに追加する有料プラグインです。3Dパーティクルを作成して、炎や煙やその他いろいろを簡単に作れるようになるそうです。
趣味でAfter Effectsを使って動画を作ったりしてるので、このプラグインを使って最高の動画を作りたいものです。
sweet
$9.99 〜
こちらもAfter Effectsのプラグインです。これはモーショングラフィックスなどに使われそうなオブジェクトやトランジションなどを揃えたもので、最近のおしゃれなプロダクト紹介動画っぽいものが手軽に作れそうです。
ZBrush
$795
粘土をこねるように扱える3Dスカルプティングソフト。
これを使って作った3Dモデルを3Dプリンターで印刷するととても楽しそうなんですが、これより機能が限られている代わりに無料のSculptrisというソフトがあるので、そちらで十分かなーとも思っています。
ゼンハイザー ワイヤレスヘッドホン RS170
¥24,116
普段家では ATH-AD700Xで音楽を聞いているのですが、ケーブルを椅子の脚の下敷きにしてしまったりしていつ断線するかビクビクしながら使ってます。
無線は音が悪いという話も聞きますが、やっぱり壊れずに使えてなんぼのものなので、気軽に使える無線のヘッドホンは魅力的です。
【国内正規品】ゼンハイザー 密閉型ワイヤレスヘッドホン RS170
- 出版社/メーカー: ゼンハイザー
- 発売日: 2010/11/01
- メディア: エレクトロニクス
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
らき☆すた ブルーレイ コンプリートBOX
¥34,800
らきすた、もう放送から7年らしい・・・公式サイトから懐かしさが込み上げてきます。
らき☆すた ブルーレイ コンプリートBOX 【初回限定生産】 [Blu-ray]
- 出版社/メーカー: 角川映画
- 発売日: 2011/05/27
- メディア: Blu-ray
- クリック: 364回
- この商品を含むブログ (27件) を見る
Newニンテンドー3DS
¥16,000
なんか新しくなるそうです。まだ3DSを買ってないのでこれを機に新しい方を買うのも良さそう・・・
よさげな椅子・キーボード
プログラムを書くものとして、やはり普段から使うものにはこだわりを持つべきだと思います。この辺りはあんまり調べてないので要調査。
オフィスチェア Ergohuman エルゴヒューマンエンジョイ ハイタイプ EJ-HAM BK (KM-11)
- 出版社/メーカー: Ergohuman (エルゴヒューマン)
- メディア: ホーム&キッチン
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
- 出版社/メーカー: PFU
- 発売日: 2006/03/23
- メディア: Personal Computers
- 購入: 9人 クリック: 308回
- この商品を含むブログ (50件) を見る