今日から始めるNode.jsコードリーディング - libuv / V8 JavaScriptエンジン / Node.jsによるスクリプトの実行

ソフトウェアを正しく理解する唯一の方法はコードを読むことです。
ドキュメントを読めばそのソフトウェアが何を実装しているか分かりますが、どのように実装されているかまでは分かりません。
開発中に何らかのトラブルに悩まされたときや、効率的なコーディングをしたいと思ったとき、下位レイヤのソフトウェアを理解しておけば素早く対処できるシーンが多くあります。

ただ、コードを読むことは簡単なタスクではありません。
現代的なソフトウェアはそれなりの規模のコードを含んでいることがほとんどです。アーキテクチャ間の差異を吸収するためのコードなど、本質的な機能を理解する上ではあまり重要ではないコードも含まれています。
何らかの問題が発生してからコードを読もうと思っても、準備なしでは関連する箇所を探すだけでかなりの労力が必要な作業となります。
従って、普段からコードを読んでおくことが重要です。

また、コードを読むにあたり、解説があれば迷うことなく重要な箇所へ読み進めることができます。
詳解 LinuxカーネルBSDカーネルの設計と実装などの解説本を片手にカーネルのコードを読んだことのある方も多いのではないかと思います。

今回のエントリーでは、Tokyo Otaku Modeのアプリケーションサーバに使用しているNode.jsのコードを読み、Node.jsの主要コンポーネントであるlibuvV8 JavaScriptエンジンと、ユーザーが記述したスクリプトをnodeバイナリが実行するまでをご説明したいと思います。

スクリプト言語の場合、自分で書いたスクリプトを動かしながらコードを読むケースも多いと思いますが、Node.jsの起動シークエンスはV8の初期化後JavaScriptから使用するオブジェクトの初期化をC++で直接行い、最終的にsrc/node.jsブートストラップスクリプトからユーザーのスクリプトが起動されるダイナミックなコードになっています。大変読み応えのあるコードであると同時に、Node.jsの他の部分を理解する上で必要となる前提知識を効率的に吸収できる部分です。

今までNode.jsのコードを読んだことがないという方にお勧めの内容です。
一緒にコードリーディングをはじめましょう。

Read More


【号外】永久保存版! 10年選手の腐女子直伝!! コミケ超初心者講座(夏編)

コミケは戦場。

Photo by Tokyo Otaku Mode

Photo by Tokyo Otaku Mode

Tokyo Otaku Mode(以下、TOM)クリエイターサポートチームの大石です。
ふだんはTOMに参加されている全世界のクリエイターの皆さんのサポートを担当しています。

今回は号外いうことで、世界最大のコミックマーケット(通称:コミケ、コミケット)について、「【号外】永久保存版! 10年選手の腐女子直伝!! コミケ超初心者講座(夏編)」というお題で、恐れ多くも記事を書かせていただくことになりました。

記事の内容は、主に
「コミケってなんですか? すごいんですか?」
「コミケって聞いたことはあるけど、近寄りがたい……」
「行ってみたいけど、僕は友達が少ない(小並感)」
という、コミケ初参加の方を対象としたものにさせていただきます!

いろいろ偉そうに書いておりますが、著者は言うほどアルファコミケッタラーではないのでお手柔らかにお願いいたします(ちなみに晴海時代、著者はまだ幼稚園〜小学生でした)。
もし「いやいや、これもあるよ! あれも抜けてるよ! それは入れるべきだろ、常識的に考えて… 死人が出るよ!」
という必須Tipsがございましたら、ぜひご教授いただけますと誠に幸甚にございます。

Read More


チームブログをGitHubとHexoではじめよう!

Tokyo Otaku ModeでEngineerやってますpchwです。

通常、チームで技術ブログを書こうとすると、

  • 他の人からフィードバックをもらいにくい
  • フィードバックをもらっても、どの部分への指摘かわからない
  • 下書きをキャプチャした画像に赤入れされたのが送られてきた
  • そもそもリッチテキストで書くのがダルい

など不幸な出来事が起こりがちです。

僕らは日々の開発と同じようなフローに則ってチームでブログを執筆する環境を整えたので、その方法を共有します。

Read More


Tokyo Otaku Modeフォトグラファーが教える写真が確実に上手くなるための 8つのマインド

いい写真を撮るのは難しい!! なんて思い込みにすぎない!(断言)

Tokyo Otaku Modeのフォトグラファーのハラです。
ふだんはTOMが運営するECサイトの商品写真の撮影を担当しています。

1

僕は15年間、プロのフォトグラファーとして活動していますが、会う人に必ず同じことを言われます。
「写真、教えてください!!!」
「どうやったら上手な写真が撮れますか?…」
そして、続けて言われるのが…
「絞りとシャッタースピードがーーー」
「構図って難しいですよねー」
で、最後に言われるのが…( 頑張って頑張って説明したあと…)
「やっぱりプロは違いますね…」
または
「今度、教えてもらった通りに撮ってみます!」(数カ月後「写真教えてください!」ってまた言われる)
はい、もうやめましょう!! 断言します! 写真は難しくありません!!超カンタンです!! プロは特別でもなんでもありません!カメラだって高級なものでもありません。今回は、その“真実”を 8枚の写真を見ながら説明していきます。最後まで読めば、確実にいい写真が撮れるようになるでしょう!!

改めて言います!
写真は超カンタンなものなのです!!

※ 掲載されている写真はすべて Tokyo Otaku Modeのフォトグラファーのハラが撮影した写真です。

Read More


Yo API を利用してカンタンに Deploy を通知し Yo!

こんにちは。Tokyo Otaku Mode エンジニアの重岡です。

Tokyo Otaku Mode はスタートアップゆえに、日々サービスの機能追加や改善を繰り返していますが、遊びゴゴロのある開発にもいくつか取り組んでいます。今回は最近、話題になっている Yo というアプリの API の利用方法に関する話を取り上げたいと思います。

Read More


MongoDBでECサイトを実運用する3つのテクニック

こんにちは。Tokyo Otaku Mode CTOの関根です。

Tokyo Otaku Modeでは、2013年8月からotakumode.com上にカート機能を追加し、決済までをワンストップでできる海外向けECサイトをスタートしました。

どういうシステム構成でotakumode.comが運用されているかを聞かれた時、「Node.js + MongoDBです」と答えると、エンジニアの皆さんは一様にびっくりします。特に驚かれるのが、MongoDBをメインのDBに使用している点です。信頼性に定評があるわけでなく、またNoSQLに対するライトなイメージが一般的にあるため、ECサイトのプロダクションとして使うことに疑問を持たれている方が多いのでしょう。
しかし、十分実用に耐え、日々機能追加が入り成長し続けるスタートアップの環境で、実際に1年間運用してきたECサイトがここにあることも事実です。

そこで今回は、MongoDBを使ってECサイトを運用するための実用的な3つのテクニックを公開したいと思います。

Read More


Tokyo Otaku Modeのグロースハック術を公開 - A/Bテストの実例 -

こんにちは、Tokyo Otaku Mode COOの安宅です。
本日からオフィシャルブログを開始します。社内メンバーの持ち回りでブログを書いていきますので、どうぞよろしくお願いします!

Tokyo Otaku Mode(以下、TOM) のイメージを日本国内の人に聞くと、「謎の会社」と言われることがよくあります。僕らは全世界で1,500万人のファンを抱えているものの、そのうち国内のファンは1%以下。いまいち何をしている会社というのが分かりづらいようです。僕らの情報発信も足りていなかったのもあると思うので、これから社内で使っている技術や運営方法について、このブログでたくさん公開していこうと思います。

Read More


Introducing Tokyo Otaku Mode’s growth hacking techniques - A/B testing examples -

Hi. This is Hajime, COO of Tokyo Otaku Mode Inc.

Welcome to our official blog. My colleagues and I will be sharing regularly on how we work here at Tokyo Otaku Mode. I hope you enjoy it!

Japanese people frequently describe Tokyo Otaku Mode (‘TOM’) as an enigmatic company when asked about it. Although we have over 15 million fans on Facebook, only less than 1% are from Japan. In order to help everyone understand what we do, we have started this blog to introduce the techniques and methods that our team uses to support and grow TOM.

Read More