サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
blog.madoro.org
最近、自分自身に関わる人事で大きな変更があった。久しぶりにブログを書いてみる。 結論から言うと、先月まで、プロダクト、開発組織、技術の3つを担当していたのだが、プロダクトと開発組織を完全に移譲することになった。 その結果、自分のレポートラインとしては移譲した人だけが部下という形になった。Quipperを始めた6年半前、最初のエンジニアに入ってもらって以来の少なさだ。これは自分としてはなかなか大きな変化である。 振り返ってみると、Quipperが始まってから6年半、Web/アプリ事業会社のCo-founder/CTO としてありがちなコースを歩んできた(最初はタイトル的にはCTOではなかったけど)。初期はとにかくコードを自分でがりがり書き、サーバーの面倒も見るし、とにかく何でもやるエンジニア。そして組織の拡大とともに段々とコードを書く時間が減っていくというやつだ。 特にリクルートグループ入り
注記: なんとなく個人ブログとは切り離したくてgistで始めたのですがあまり意味がなさそうなので統合します。これは ここ に載せたものの転載です。 前回、現在のQuipperの状況みたいのを書いたが、今回は、普段CTOとして、どういうことを意識して開発チームを作っているか、どういう開発チームになって欲しいと思っているか、というのを書いてみたいと思う。 この辺り、自分自身の経験からくる「好み」とか「美学」みたいなものが強めな部分でもあるので、表に出すのはなかなか勇気がいるが、co-founder/CTOである自分のそういうところが、開発チームのカルチャーに当然影響しているし、一緒に働くことになる人ととはカルチャーのマッチがとても大事だと思っているので出してみる。 まず、以前、社内でなんとなく書いた文章があるのでそのまま出してみる。これは開発者の採用活動に当たり、どんな人が欲しいと思っているか
リリース完了 スタディサプリ高校講座/大学受験講座を無事リリースすることができた。 大きなトラブルもなくリリース後数日での「数字」的なものもとりあえず一安心という状況だ。 人生何度ものリリースを経験してきたが、今回のリリースは今までとは違う大変さがあった。 このプロジェクトが始まったのはリクルートの昨年のQuipper買収後少し経ってからになる。既存の受験サプリをQuipperプラットフォームに載せ替えるというのが大きなお題だ。リリース予定は2016年2月末。教育業界、季節性がとても大きいのでこのデッドラインは遅らせることのできない厳しいものだ。 また、今回はシステム面の置き換えだけでなく、受験サプリからスタディサプリへのブランド統合も同時に行った。Quipper開発陣も当然のことながらこれにも関わることになった。 そして、受験サプリからの継続ユーザーもたくさんいるので、課金機能などは既に
注記: なんとなく個人ブログとは切り離したくてgistで始めたのですがあまり意味がなさそうなので統合します。これは ここ に載せたものの転載です。 今回はQuipperの開発体制と進め方について書いてみようと思う。 開発チームの規模 第一回で紹介したように、Quipperは、ロンドン、東京、マニラ、ジャカルタ、メキシコシティにオフィスがあり、そのうちロンドン、東京、マニラが開発拠点になっている。 内訳としては、以下の様な状況だ。 Web iOS/Android Engineering Design Total London 3 0 0 1 4 Tokyo 5 4 3 1 13 Manila 7 1 0 2 10 Total 15 5 3 4 27 30人弱。この規模から、今年中に3拠点合計で10人くらいの増強を考えている。拠点毎、職種毎の大まかな計画はあるが、いい人がいたら拠点/職種毎の採
注記: なんとなく個人ブログとは切り離したくてgistで始めたのですがあまり意味がなさそうなので統合します。これは ここ に載せたものの転載です。 これはなに なんとなく始めてみた短期集中のQuipperのCTOブログ。リクルートグループに入り、ますます日本での活動が増えているQuipperなので、CTOとして、開発、プロダクト、サービス、チームに関わることを書いていこうと思っている。今回は、第1回ということで、Quipperの現状について書いてみようと思う。 最近のQuipper関連記事 まず、最近、世の中に出たQuipperについての記事を。 https://newspicks.com/news/1317287/body - 【渡辺雅之×山田進太郎】グローバルスタートアップの世界戦略 https://mirai.doda.jp/series/interview/quipper/ - 生
普段はスルーしている年終わりの振り返りだが、今年はちょっと人生の節目の年だったので書いてみる。 まず、40歳になった。普段はあまり自分のも他人のも年齢どうこう考えないし言わない方だと思うんだけど、この39から40にかけては考えることが多かった。 テレビの中の人を含め、40歳50歳辺りの年齢の人が大病になったり亡くなったりしているのを見る機会がとても多かったからかもしれない。単に、今までスルーしてたその辺りのニュースが、自分の年と近づくことによって意識するようになっただけなのかもしれけど。 ただ、確か死亡理由みたいので、30代くらいまでは、自殺/事故辺りが上位の理由だったはずだが、40代くらいから、病気になってくるし、死に始める年齢であるのは間違いないだろう。 心身ともにそんなにガタが来ているような感じはまだないのだけど、いつどうなるかわからないというのを強く意識するようになった。また同時に
元DeNA創業メンバーの渡辺氏が創業した「Quipper」をリクルートが約48億円で買収、現状と今後の狙いを聞いた このこと自体を決断したのはそれなりに前なので、自分の中では今更な感じがありつつも、大きく取り上げられると、やっぱりなかなか感慨深いものがある。 みんなもなんか書いてるし、せっかくのタイミングなので、自分も何か買収される側の変化みたいなものを書こうと思って書き始めてみたのだけど、そこまで大きな変化みたいなものがなかったことに気づいた。というのも買収後、元々Quipperがやっていたこと/やりたかったことの方向性が変わったわけでもなく、ただその方向を強く加速してもらっているという感じなので、とても自然に進んでいる。 上の記事の中でCEOである渡辺さんがモビルスーツという喩えを使っているがまさにそんな感じ(モビルスーツ本当はよく知らないので雰囲気で!)。うまく、PMI(post-m
ここ1、2年、東京オフィスでは積極採用をしていなかったのだが、事業拡大につき積極的な採用を再開している。表に出している公式の求人情報とは別の角度でQuipperとはどういう会社で、どういう人を求めているのか、みたいなことを書いてみることにした。 Quipperの今までと現在の状況 Quipper、創業5年目に入ったところ。最初の3年間はピボットの連続で、教育周りでいろいろなことをやってきたが、3年目の終わりくらいからサービスを絞り、成長フェーズに入っている。スタートアップ初期の荒波、生きるか死ぬかみたいなフェーズは終わっている感じだと思う。そこを楽しんでみたいと言う人にはちょっと遅いかもしれない。今はその次の成長フェーズで、そこを楽しみたい人にはぴったりのタイミング。初期の荒波は、それはそれで正直楽しいのだけど、落ち着いてプロダクト/サービスに集中し良いものを作る!というのは今のフェーズだ
って、大事だなーと思っていてエンジニアの力の差が大きく出るところだと思っている。 新規サービス 新規アプリ ちょっとした社内ツール プロジェクトの進め方の改善 大き目のリファクタリング とかなんでも、とりあえず始めることは簡単だ。ただ、それを形にしてリリースしたり継続するのは難しい。 データベースのマイグレーションが必要だったり、最後の細かいUI調整もなかなか時間がかかる。色々な環境でのテストも必要だ。 技術的以外な部分でも、関係者との調整や、ユーザーへのお知らせ、面倒なことが多い。 開発者なら誰でも実感値あると思うけど「だいたいできた」から「リリース」までの距離はだいぶ遠い。自分の感覚としては「だいたいできた」で良くて半分くらい。楽しいのも最初の半分、後半は楽しくないことが多い。飽きも来る。 (これらの面倒なことを減らすのが、Quipper CTOである自分の役目だとも思っている、がそれ
最近CIサーバーを自前Jenkinsから CircleCI に移した。CircleCIとても便利で簡単なのでオススメ。 CircleCIには普通のheroku deployは内蔵されているのだけど、 非開発者もGitHub Flowに巻き込んでみんなハッピーになった話 、をやるにはちょっと工夫が必要。 色々書こうと思ったけど、めんどくさくなったのでscriptを晒しておくだけにしよう! この中で使われているスクリプト関連、特に秘密にする部分もないのでpublicでgithubに置いている。 https://github.com/quipper/deploy-support-tools /circleci.yml deployment: feature: branch: /^(?!^master$).+$/ commands: - ./script/staging_deploy.sh pro
前提: GitHub flow を使っていてCIサーバーはJenkins 最近ちょっと開発フローの改善をして、とてもよく機能してて満足しているので紹介してみる。 この改善をやる前の悩み: pull-requestでコードレビューはできるのだけど、cssとかjavascriptなどの見た目や動作の変更ってコードだけだとわかりにくい。レビューする人が各自ローカル環境で実行するのもだるい。 コードを読まないデザイナーとかプロダクトオーナーとかの人が、pull-requestのレビュープロセスに簡単に参加できない(非開発者全員のところでローカル環境設定するのはだるすぎる)。 コード的にokに見えてmasterにmerge後、何か問題(特に仕様的な問題や、デザイン的な問題)が発生した場合、「修正branchを作ってpull-request」というフローを再度回さないといけない。最初のpull-req
Quipper、日本オフィスができて半年以上達ち、このブログでも改めて色々発信してみようと思ってはいるのだけど、一度間が空いてしまったブログの再開はなかなか難しい(本人以外誰も気にしていない現実を知りつつ)。この状況を打破するために、軽いのをまず書いてみる。本当はQuipperの開発について色々書きたいんだけど、それはまた次回。 最近出会った mailtrap.io というサービスがWebシステム開発にとてもいい感じなので紹介してみる。 メール送信は、ある程度テストを自動化したとしても、繰り返し、手で実行して目で確認することも多い。テストするときは、送信先アドレスを自分にして、送信して、自分のメールボックスを開いて確認する、とか。めんどくさい。何か問題を発見したら、関係者にメールをフォワード、とかもめんどくさい。ステージング環境では実際に送らずに、ログに出すという方法もあるけど、これだと、
Wikiというものはとても便利なんだけど、 大量の文章を書くにはWebブラウザのインターフェースはまだまだ辛い オフラインで使えない(文章書くのは電車が一番) 複数の文章を再構成したり、一括で検索したり、置換したりは、Webだとやっぱりきびしい と言った欠点がある。 とは言え、誰でも気軽に編集できるWikiの魅力も捨てがたい。 そこで、「Wikiではあるんだけど、ローカルでも自分の好きなエディタで簡単に編集できるツールないかなー」と探してみたら、 Gitit というWikiを発見した。 ここ数日、結構な量のドキュメントをGititで書いてみて、わりと満足しているのだけど、検索してもGititの日本語の情報があまり出てこないので紹介してみる。 Gititの特徴 コンテンツをGitのレポジトリに保存する。 そのGItレポジトリをcloneして好きなようにいじってからcommit/pushすれば
ここ数ヶ月、Google App Engine/Pythonを使い、初めてちょっとしたものを作ってみているのだけど、開発初期から知っておけばよかったなー、と思うノウハウ/tips的なものをずらずらと書いてみる。 基本的な環境設定は、 以前書いた まま。 0. 公式ドキュメントを良く読む 言うまでもなく、だけど、 マニュアル はもちろん、 この辺 の下の読み物も、流し読みだけでもしておいたほうがいい。 datastoreとmodel的なところ 1. key nameを使いこなす key nameは、レコードの作成時に指定できる(RDBでいう)primary keyの別名みたいなもの。primary key自体は自動的で作成されるので開発者が指定できるのはkey nameだけ。 key nameをうまく使うことで、datastoreを使いやすくすることができる。特にdatastore上で"un
やめちゃった。 8年半前に創業直後だったこの会社に入って、ほぼ0から色々なものを作り、動かし、それなりに会社は大きくなり、立場的にもそれなりに偉くなり、給料もそれなりに貰って、居心地は悪くなくて、そうなんだけど、その一方で、自分にとって刺激は少なくなり、なんとなく楽しさが減っていた、という感じ。自分自身なんとなく安定してしまっている、という状況自体がなんとなく怖かったりもした。 それでも、暇なら色々と遊べるのだけど、日々やらないといけないことは全然減らなくて、忙しいんだけど何か刺激がない、みたいな悪い状態に陥っていた。 会社のことを考えてみても、多少老害になりそうな自分が辞めることで、新陳代謝したほうがいいのかなー、というのもある。よく知っているだけに思い切ったことができなくなっていることも多いし、なんとなく偉そうにしている自分も嫌だったりした。 前にも少し書いた ように基本的にいい会社に
追記: 続編的なものを書いた。 今年は色々なことに手を出してみよう、ってことで少し前からGoogle App Engine(以下GAE)で、あるモノを作っている。モノ自体は近いうちに公表できると思う。 基本的に、Pythonと標準っぽいフレームワークだけでやってみている。作っているものがそれなりにシンプルなのと(だからこそGAE!)、GAEでそれなりの規模の開発をするのが自分自身初めてということもあり、あまり色々なレイヤーを重ねて手こずりたくなかった、ってのがその理由。 ただ、GAE初心者なので、「いやいやそれは今時ないよ」「XXの方が100倍いい」とかあったら教えてくれると嬉しいので今のところの環境を書いておくことにした。今ならスイッチ可能。 今作っているものがJSONファイルを入出力するだけのものなので、HTML生成パートみたいのはない。 1. フレームワーク 上にも書いたように、今回
前から気になっていた Heroku + MongoHQ を試してみた。HerokuはRubyアプリケーションを走らせるホスティングサービスで、MongoHQはMongoDBのホスティングサービスだ。この二つを組み合わせることで、MongoDBを使ったRubyアプリケーションを一瞬で運用開始することができる。 あまりにも簡単に使えてあまり書くこともないんだけどメモ。 まず、両方とも最低限の環境は無料で使用できる(ただしHerokuからMongoHQを使うためにはクレジットカードの登録は必要っぽい)。 今回は Ruby on Rails 3 + Mongoid で作ったアプリを置いてみた。 手順 1. まず、普通に RoR + Mongoid のアプリケーションを作る 2. Herokuにアカウントを作りアプリケーションを登録する (http://docs.heroku.com/quickst
記事を投稿したのが19日で、普段のvisitor数が数百なので、どかーんと増えてだいたい丸3日で正常運転に戻ったようだ。ほとんどが、はてなブックマークのトップページ(人気エントリ)と、はてなのトップという掲載期間のあるものだから当然か。 twitterは自分が想像していたよりも息が短く、同じように丸3日ぐらいでブログへのアクセスもほとんどなくなり、自分宛のmentionもほとんどなくなった。もちろん、記事の内容や質によってはもっと後を引くこともあるんだろう。 もちろん、リファラーからの分析なので、専用クライントとか、RSSリーダからのものは入ってない。特にtwitterはそういうのが多そうだなあ、と想像はできる。 数字的には、正直なところ、まあこんなものか、という感じ。もう数倍くらい多いのかなと勝手に妄想していた。 ええ、普段はB2BのWebのお仕事なのであまりこの辺の分析をしたことがない
2002年、当時設立したばかりの会社に入り、何もない状態から、コンテンツとシステムを作り続け8年が経った。日々、試行錯誤しながら、それなりに会社も大きくなり、まだ、大成功とは言えないけど、それなりにうまくやってきたつもりだ。 しかしながら、その8年という短くはない時間の中で、色々な課題や問題が発生し、その時々正しい選択をしてきたつもりだったけど、反省点も多い。もう一度スタートアップに参加するとしたら、やり直したいところや、もっと早くこうしていれば良かったというところがたくさんある。 そんなわけで、次の挑戦のときに忘れないように、また、もしかして誰かの参考くらいになればと思い、メモっておくことにした。1 まず、反省点の前に、何をやっているのかというのを簡単に。 ビジネスとしては、英語e-learningのWebサービス(ネットを使った英語のお勉強)をASPな形で、企業や大学などに提供している
ぼちぼち進めてきた MongoDB の日本語訳ですが、その中の大きなセクションの一つである Developer Zone の 翻訳 が完了しました。Developer Zone内のすべてのページは完全に英語版と同期しているはずです。 Developer Zoneとは このセクションでは、MongoDBの特徴、仕組み、基本的な操作、MongoDBを使ってアプリケーションを開発する開発者はどういうことに意識した方がいいのか、と言ったことが書かれています。 MongoDBで開発をする人はまず一読しておくべき内容です。 目次 チュートリアル マニュアル コネクション データベース コマンド データベースの複製 fsync コマンド インデックス関連コマンド Last Error コマンド Windows サービス 動作中の処理の参照と停止 Validate コマンド List of Databas
tenshiとは サーバ上のログファイルは、ただ記録しておいて問題があったときの調査に使うだけではなく、リアルタイムで監視することでアプリケーションやサーバの不具合の早期発見をすることができる。問題が表面化する前に対策を行なうにはログの監視が不可欠だ。 しかし、サーバは、種類も数もどんどん増えていくものだし、それに合わせログファイルの種類も量もどんどん増えていく。全部見るのはもちろん不可能だし、適当に通知をしてもメールボックスを溢れさしてしまうことになり、結局は無視することになってしまい意味がない。 そこで、賢く効率的に監視するために tenshi というツールが非常に便利に使える。 このツール、最近しばらく使っていなかったのだが、最近会社で再び使い始め、便利さを再確認したので紹介してみる。知る人は知るツールだと思うけどいまいちマイナーなのかな? tenshiは、元々はGentoo Lin
前回書いた さようならPuppet、こんにちはChef が、それなりに反響あったので調子に乗ってもうちょっと書いてみる。 前回、ChefはPuppetに比べて簡単!とか書いたが、実際には慣れるまでそれなりに戸惑うところがあった。 ドキュメント を読み、実際に触っただけでは一発で理解できなかった部分を、自分のメモを元に晒しておく。これだけ読んでもいまいちだと思うので、関連するドキュメントへのリンクも張っておくので合わせて読んでみると高速でChefを理解できるかも! client vs node Chef Client Nodes ドキュメントを読んだりChefを触っていると client と node という二つのワードが出てくる。この二つは似ているけど別物。 client は文字通り Chef server の相手になるもの。 Chef server にアクセスするものはすべて clien
ここ最近、サーバの設定ファイルの管理で Chef を使い始めている。まだ全然詳しくないけど、今感じている「Chefの楽しさ」を誰かに伝えておきたかったので、ファーストインプレッションを簡単に。 Puppetを今までそこそこ使っていたので、どうしてもそことの比較な感じになっちゃいます。Puppetも良いのだけど、Chefは後発ということでさらに良くなっている感じ。 基本的な仕組 これは、Puppetとほぼ同じ。クライアント-サーバ型のシステム。設定を書き、それをサーバに置いておく。クライアントはサーバと接続し、自分自身の設定を書き換えたり、必要なソフトウェアをインストールしたりする。 rubyな設定ファイル Puppetは基本的に独自DSLで設定ファイルを記述すので「覚えるのがめんどくさい」「細かいこと、ちょっと無茶なことをしようとすると大変」。Chefの設定ファイルはrubyそのものなので
ちょっと調べてみたのだけど、現実的にあまり使えない気がする。でもせっかく調べたのでメモ。 まず、このブログは Sinatra+MongoDBをnginx+thin で動かしているのだけど、非力なVPSサーバなので、Sinatra+MongoDB+thinをなるべく使わないように できるだけnginxにcacheをさせている 。そのため更新時にはcacheを消さないといけない(トップページとか)。今はデータ更新時に、すべてのキャッシュを消している。ただ、どう考えてもださいので更新したコンテンツだけpurgeできる方法がないか調べてみた(サーバに余裕あれば、毎回backend(Sinatra)に問い合わせてもいいんだけどもね)。 nginxはデフォルトでは部分的なpurgeはできないので、 ngx_cache_purge module を使ってみた。FreeBSDのports (www/ngi
githubには個人でも会社でもお世話になってるので新しくできたJobボードに載せてみた。もちろん求人自体は本物なので興味ある人は応募してください。勤務地は東京です。 https://jobs.github.com/positions/a9bc8e26-a6d5-11df-8cf1-63a2a0cb612b 載せるのはとても簡単。Webフォームに求人内容を書いて、クレジットカード情報を入力して完了。プレビュー含めインターフェースがよくできてるのはさすが。載せると修正用のURLが送られてくるのでtypoとかにビビリ過ぎなくても大丈夫(自分は知らなかったのでかなりビビった)。 どのくらい応募があるのか楽しみ。 この求人についてちょっと補足すると、海外に興味はあるけど、いきなりは海外は自信ないとかの人の練習にちょうどいいと思います。技術があれば英語はこれからでも大丈夫です。日本オフィスにも英語な
(2010-08-30: Rails 3.0.0がリリースされたのでそれにあわせて更新。generator関連が少し変わってる) 前回 の続き。 主に FactoryGirl と MongoMapper の話。基本的に何も考えなくてもそのまま使えるのだけど。 まず、設定。 spec_helper.rb で、 config.use_transactional_fixtures = true を config.use_transactional_fixtures = false にする。そうしないと、ActiveRecord::TestFixtures が呼ばれてしまうのだが、ActiveRecordを入れてないので落ちる。 そもそもMongoDBにはトランザクションとかないのでfalseでいい。 後は、ActiveRecordで使う場合と同じように、FactoryGirlの定義の読み込みを
(2010-08-30: Rails 3.0.0がリリースされたのでそれにあわせて更新。generator関連が少し変わってる) 会社用の、小物Webアプリを作ろうかと思い、せっかくなのでRuby on Rails 3でmongoDB使ってみようかな、と思い、とりあえず環境を作るところまでのメモ。 Rails 3 のインストール とりあえず Rails 3 のインストール。Bundlerで入れる。Bundler自体のバージョンが1.0以上でないとダメみたいなんで、もしそれ未満しか入っていない場合にはBundlerのインストールからする。 プロジェクトのトップディレクトリとなるところを作成し、そこにGemfileを作る。 $ mkdir ~/workspace/hoge_prj $ cd ~/workspace/hoge_prj Gemfile source 'http://rubygems
出張とか旅行で家を空ける機会が多かったので久しぶりになってしまった。 普段はFreeBSDをサーバ用途で使っているのだけど、Macでも手軽に実行できるので紹介してみる。ダウンロードして展開する以外、特にインストール作業いらない。もろもろなパッケージ管理ツールみたいなものを使ってもいいけど、遊ぶぐらいならこれで十分かな。 とりあえず、 ここ から適当にダウンロード。(OS X 64-bit の 1.5.X とか) 次に、mongoDBのデータを入れるディレクトリを作成。 $ mkdir /somewhere/mongodb_data 後は、ダウンロードして展開したmongodを実行するだけ。 $ /foo/bar/mongodb-osx-x86_64-1.5.3/bin/mongod --dbpath=/somewhere/mongodb_data オプションを何もつけないとフロントエンドで
次のページ
このページを最初にブックマークしてみませんか?
『Masatomo Nakano』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く