インターン前半では、はてな独自のWebサービス開発手法について、各サービスを担当するエンジニアやディレクターが講義しました。全7回の講義を通じて、企画、設計から開発、リリース、運用に至るまで、Webサービス制作過程の全体を学びます。1日目から5日目までの講義では毎回課題が出され、全課題をクリアした参加者のみが、後半の「アプリケーション開発」に進めます。
はてなで主に利用されているプログラミング言語「Perl」の基本的な使い方を確認するために、事前課題が用意されています。課題では、Perlを用いてソート(並べ替え)やリスト構造を記述したり、Twitterのようなアプリケーションの一部をオブジェクト指向で開発したりします。Perlやオブジェクト指向の基礎知識に加え、データ構造やアルゴリズムといったプログラミングの基礎力も試されます。
Webアプリケーションの開発では、一般にデータベース管理システムと呼ばれる、大量のデータを効率よく管理するソフトウエアが用いられます。このデータベースへのアクセスを便利にするのが、「ORマッパー(ORM)」と呼ばれるソフトウエアです。はてなでは、独自開発の「DBIx::MoCo」というORマッパーを利用しています。このMoCoを使って、ブログを題材にデータベースにおける読み書きの基本を学びます。
2日目に作ったプログラムを元にして、ブログをWebアプリケーションに仕上げていきます。はてなではWebアプリケーションの開発を効率化するために、「Ridge」と呼ばれる独自のWebアプリケーションフレームワークを用いています。Ridgeは、多くのWebアプリケーションフレームワークと同様に、MVC(Model、View、Controller)の3つに分割してアプリケーションを開発できます。
昨今のWebアプリケーション開発において、クライアントサイドで動作するJavaScirptはとても重要です。はてなでもユーザーインターフェースを中心に、積極的にJavaScriptを活用しています。4日目の講義では、まずWebにおけるJavaScriptの基本といえるイベントやコールバックの概念を理解します。課題では、表示しているページの動的な変更、具体的には表示しているブログを画面遷移なしで編集する機能を実装していきます。
4日目までに作ってきたブログに、はてなならではの企画手法や設計手法で、独自の機能を追加します。まず付箋紙などを活用して、どんどんアイデアを出します。参加者同士で議論しながら、出たアイデアをさらに膨らませます。開発する機能を決めたら、画面設計を経て、開発、実装していきます。
はてなは、国内でも有数の大規模Webサービス事業者です。サーバー台数は数百台、トラフィックはGbpsのオーダーです。6日目の講義では、この規模を支えるためのネットワークやサーバーといったインフラストラクチャを学びます。はてなで開発するアプリケーションが、どのような環境で動作するかを知ることで、堅牢で効率の良いコードを書く重要性を学びます。この講義には課題はありません。
iPhoneやAndroid端末といったスマートフォンで動作するアプリケーションの開発について学びます。まずスマートフォンの現状や、開発ツールなどの概要を簡単に確認します。続いて「はてなブックマーク」アプリを例に、アプリ開発の手順や、現状での良い開発のやり方、注意すべき点などを知ります。この講義も課題はありません。