2014年10月15日水曜日

Uzabaseの技術者になりたい方へ



テクノロジーで世界最大級の企業・業界データサービスを開発するチームです。


日本中、世界中のお客様に対して、「今」を超える価値をもつサービスを実現するためのシステム開発をお願いします。

アプリケーション、データベース(DB)、サーバの設計・開発・運営をチームで行います。

個々のプロジェクトごとにオーナーを割り振り、オーナーが開発スケジューリング管理や協力会社との折衝など、チーム協力を仰ぎつつ責任を持って一つのプロジェクトを遂行するスタイルです。

将来のキャリアパスは、志向性によりお客様との折衝やマネジメントの立場についたり、エンジニアとして自身が考えた技術を研究し実用化していくなど、様々なキャリアパスを選択することができます。


募集要項


SPEEDA (http://www.uzabase.com/speeda/)部門


□ Web/サーバーサイド エンジニア
ユーザベースでは、プロダクトの設計から開発・テスト・リリースに至るまで、全てをインハウスのエンジニアが行っています。
世界一の経済メディアをつくるというミッションを元に、あらゆる技術を駆使してモノを創る、サービスの根幹を担うポジションの1つです。
当社の7つのルールの1つ「自由主義でいこう」に則って、勤務時間も服装も使用するPCも自由です。
自ら主体的に立ち回り、提案し、実装する優秀なエンジニアが伸び伸び働いています。
ユーザー視点に立ち、サービスの本質的価値を追求し、世界一の経済メディアを創り上げましょう!

≪ 必須 ≫
・「世界一の経済メディアをつくる」というミッションに共感できる方
・3年以上のWebアプリケーション開発経験(ビジネス・プライベートを問いません)
・自らどんどん手を動かして開発を行いたい方
・国籍・学歴不問
≪ 歓迎 ≫
・アプリケーション層にとどまらず、インフラ/ネットワーク層まで深く理解されている方
・機械学習や自然言語処理に関するPh.D.をお持ちの方

NewsPicks(https://newspicks.com/top-news)部門


□ サーバーサイド/Webエンジニア
ユーザベースでは、プロダクトの設計から開発・テスト・リリースに至るまで、全てをインハウスのエンジニアが行っています。
世界一の経済メディアをつくるというミッションを元に、あらゆる技術を駆使してモノを創る、サービスの根幹を担うポジションの1つです。
当社の7つのルールの1つ「自由主義でいこう」に則って、勤務時間も服装も使用するPCも自由です。
自ら主体的に立ち回り、提案し、実装する優秀なエンジニアが伸び伸び働いています。
ユーザー視点に立ち、サービスの本質的価値を追求し、世界一の経済メディアを創り上げましょう!
≪ 必須 ≫
・「世界一の経済メディアをつくる」というミッションに共感できる方
・3年以上のWebアプリケーション開発経験(ビジネス・プライベートを問いません)
・自らどんどん手を動かして開発を行いたい方
・国籍・学歴不問
≪ 歓迎 ≫
・Webアプリケーションのグロース経験をお持ちの方
・アプリケーション層にとどまらず、インフラ/ネットワーク層まで深く理解されている方
・機械学習や自然言語処理に関するPh.D.をお持ちの方


□ スマートフォンアプリエンジニア
ユーザベースでは、プロダクトの設計から開発・テスト・リリースに至るまで、全てをインハウスのエンジニアが行っています。
世界一の経済メディアをつくるというミッションを元に、あらゆる技術を駆使してモノを創る、サービスの根幹を担うポジションの1つです。
当社の7つのルールの1つ「自由主義でいこう」に則って、勤務時間も服装も使用するPCも自由です。
自ら主体的に立ち回り、提案し、実装する優秀なエンジニアが伸び伸び働いています。
ユーザー視点に立ち、サービスの本質的価値を追求し、世界一の経済メディアを創り上げましょう!
≪ 必須 ≫
・「世界一の経済メディアをつくる」というミッションに共感できる方
・2年以上のスマートフォンアプリ開発経験(ビジネス・プライベートを問いません)
・自らどんどん手を動かして開発を行いたい方
≪ 歓迎 ≫
・スマートフォンアプリのグロース経験をお持ちの方
・サーバーサイドアプリケーションの知見をお持ちの方

インターンシップ(SPEEDA,NewsPicks両部門)

□ 技術インターンシップ
ユーザベースでは、就業型インターンシップを随時行っています。
荒波に乗るベンチャー企業で、自由に働くハイレベルなエンジニアに囲まれて一緒に成長しましょう!
≪ 資格・対象 ≫
・現在大学・大学院・高専に在学中の方。
・情報系の基礎知識を勉強中の方。(趣味でも構いません。)
≪ 仕事内容 ≫
・メンターとコミュニケーションをとり、適性と希望にあった開発業務を行っていただきます。
≪ 報酬 ≫
・給与:時給1000円〜 / 成果報酬(仕事内容によって異なります)
・交通費支給


オフィスに遊びに来てみてください。
応募はこちらから(Wantedly)

UZABASEホームページはこちら
SPEEDA部門採用ページ
NewsPicks部門採用ページ
インターンシップ採用ページ


2014年8月27日水曜日

第5回 UZABASE TALK

久しぶりのブログ更新です。
はじめまして技術チームの外間(ほかま)です。

ユーザベースでは、たびたび外部を招いての合同勉強会を行っていますが、この度『UZABASE TALK』と題しまして第5回目の勉強会を開催しました。

※過去の勉強会の様子はこちら
第一回技術勉強会第二回技術勉強会

今回は社内から5名、外部からYahooLIVESENSEの4名と計9名の方にご登壇いただき、
オーディエンスとしてookamiにご参加いただきました。
また、初めて社内ではなく、外部のパーティースペースをお借りして開催しました。
回を重ねるに連れて順調に規模も大きくなってきています!

今回の勉強会のテーマは「HTML5」


HTML5に対応するブラウザが普及しだし、旧来のブラウザでは表現できなかったことが
出来るようになってきている今、自社のサービスにどのようにHTML5の技術を取り入れることが出来るか、
また、それによってユーザに対してどのような新しい体験を提供することが出来るか、勉強会を通して情報の交換の場を作りたい。というのが今回の勉強会の狙いです。

では当日の様子をご紹介していきます。


会の開始を待つ間、参加者の皆さんは会場に用意された軽食やドリンクをつまみつつ、ざっくばらんに会話を楽しんでいます。



お酒を飲みながらお互いに自己紹介などしつつ、いい雰囲気です。



そしていよいよ会がスタート。今回はこのような流れで進みます。



まずはプレゼンテーションからスタートです。



<プレゼンテーション> 

1.「安全なID連携のハウツー」 倉林さん@Yahoo



最近、セキュリティが問題視されているID関連から、高セキュリティと低コストを両立した効率的なID連携方法について解説いただきました。

ID管理は我々にとっても重要な要素なので、とても興味深い内容でした。




2.「データビジュアライゼーション - dc.jsで遊ぼう -」 清水さん@UZABASE



dc.jsを用いて、グラフなどのデータをより動的に表現する方法について解説いただきました。

1つのイベントに連動して複数のグラフが動的に表示されるデモはとても刺激的でした。





3.「HTML5とスマートフォンと3Dと」 竹内さん@UZABASE



我らがチーフテクノロジストである竹内さんには、HTML5でスマートフォン用のネイティブアプリを構築出来る"Apache Cordova"および、その上で更にWebGLを利用した3Dライブラリである"three.js"を動かすというデモをしていただきました。

※資料は事情により公開できません。



途中に休憩を挟んで、後半からはLT(Lightning Talk)です。



<LT(ライトニングトーク)>

1「HTML5時代のClojureScript」松下さん@LIVESENSE



Clojure言語をHTML5で活かす実践方法について解説いただきました。

メリット、デメリットを面白おかしく解説いただき、会場もとても盛り上がっていました。

Clojureは括弧が多いので慣れないとつらいということがよく分かりました。笑

※資料は事情により公開できません。


2「ウェブStrage」島川さん@LIVESENSE



クッキーに代わるデータ保存の仕組みとして利用できる"Web Strage"について、具体的な活用方法を解説いただきました。

※資料は事情により公開できません。


3.「JSでアニメーション頑張ってみた 」 植村さん@LIVESENSE



最近ブラウザでサポートされだしたHTML5の新機能"Web Animations"によるアニメーション作成について解説いただきました。

日頃やられているというスケートボードをモチーフにしたアニメーションでデモを行ったりと、独創的でとても刺激になる内容でした。

※資料は事情により公開できません。


4.「あなたのメンタルモデルあってますか? 」 矢野さん@シェルフ



新しい技術に取り組む上で、誤解から生じる思わぬ落とし穴をご自身の経験から解説いただきました。

効率よく、バグのないシステムを開発するためのメンタルモデルの大事さを改めて考えさせられました。




5.「SPDYを触ってみる」 羽山さん@UZABASE



GoogleがWebの表示を高速化するために提唱しているプロトコル「SPDY」がどのようなものなのかデモを含めつつ簡単に解説いただきました。
今後動的なWebコンテンツが増えていく上で、表示の高速化も必要になる、というインフラ担当ならではの着眼点です!




6.「HTML5のHTML5によるHTML5のためのクイズ 」 杉浦さん@UZABASE


クイズ形式でHTML5について解説いただきました。

杉浦さんお得意のリアルタイム参加型で、会の締めくくりに相応しい大きな盛り上がりとなりました!

※資料は事情により公開できません。


勉強会終了後は有志で懇親会へと流れ、引き続きお酒を飲みながら(この会は最初から最後までずっと飲んでますね)社内外を通した技術、思想の共有が出来ました。


今回の勉強会はHTML5というテーマをベースに、ID管理から言語紹介、インフラ、プログラミングをする上での考え方まで幅広い内容で、とても充実した会となりました。

今後もニーズにあった内容で、ユーザベースらしい親しみやすい雰囲気の、更に充実した勉強会を開催していければと思います。


ちょっと聞いてみたい、いやむしろみんなの前で話したい!と思った方はお気軽にご連絡下さい。




今回の勉強会はキャリアハックに取材いただいて、記事にしていただきました。こちらもご覧いただければと思います。
ユーザベース主催『HTML5』エンジニア勉強会イベントレポート

2014年8月21日木曜日

NewsPicksのUIデザイン

たぬきです。

先日、HatchUp様主催の「第2回ノンゲームスマホアプリ勉強会」に発表者として参加してきました。

ノンゲームスマホアプリということで、ここ2年くらい企画・開発してきた、NewsPicksについてお話ししました。

僕は、「ノンゲームアプリ」はゲームアプリより(ある意味)自由なんじゃないか、と思っています。僕も個人的にゲームアプリを作ったりもしているのですが、ゲームアプリは、開発を始める段階で完成イメージがだいたい出来あがっていて、それをどう作っていくのかという作り方をしています(作っていくうちに思わぬ変化をすることもありますが)。

一方で、ノンゲームアプリは、作り始めるときにサービスコンセプトは決まっていても、画面がどうなるかは全然決まっていなかったりします。だから、技術者・デザイナーが、サービスコンセプトを理解し、それを経験・技術を使って何よりも分かりやすい形に結実させていく、そんな自由度があるアプリケーションなんじゃないかと思っています。

NewsPicksはそんな感じで開発してきたアプリなのですが、今回はそのうちの一機能、「階段」についてのお話。


NewsPicks事業は2013年の頭に立ち上がりました。そこで出てきた疑問
「僕たちが本当に知りたいニュースって何だろう?」

喧々諤々の議論の末、僕たちが辿り着いた結論は、「自分が尊敬している人、友達、有名人が興味をもったニュース」なのではないか、ということでした。そこで、そういった人たちをフォローできるようにし、その人たちが興味をもったニュース(Pickしたニュース)を見られるサービスを作ろうということになりました(8ページ目参照)。更にその人たちがニュースにどんなコメントをするか知れたら面白いかも!

さて、サービスのやりたいことは見えてきました。ではどういうデザインにすべきでしょうか。デザイナーと肩を並べて色々開発して試してみました。

これが一番始めに作ったデザインです。各ユーザーがそれぞれの雑誌を作っていて、それを購読できる、といったことを考えて作りました。左上のカラフルなパネルが、全員のニュースをまとめ読みできるタイムラインです。


作ってみるとデザイン的にはカッコ良かったのですが、うーん、カラフル=まとめ読みという表現は理解しづらいですね。。。

次に作ったデザインは、iOS7のSafariのような機能でした。つまり、適当なボタンを押すと、2次元に描画されていたタイムラインが3次元状に展開され、後ろ側に各ユーザのPickしたニュースが並んでいるようなイメージです。(スライドの10ページ目にSafariのイメージがあります、元イメージは消失してしまいました……)

しかし、次元の転換はやってみると唐突感がありました。

と、試行錯誤を繰り返したあと、「階段」というアイデアにたどり着きました。実際のアプリでは左上のボタンをタップすると見られる、階段状にユーザーが並んでいるデザインです。階段をタップすればそれぞれのユーザのPickしたニュースが見られ、階段の手前にあるタイムラインにはそれらからニュースが生成されていることを表現しました。



アプリ勉強会ということで、プログラムの設計とコードをスライドに書きましたが、見てみると非常に単純です。iOS/Androidアプリはそれっぽい動作をするものをとても簡単に作れるので、いろんなデザインを試せていいですね。

その後も、ちょっとした問題が起こりました(18-20ページ)。ユーザをたくさんフォローすると、階段が詰まってしまうという問題です。これに関しても、デザインと技術の力で簡単で強力な解答を出せました。階段の上下に吹き溜まりのようなViewを追加することで描画したいことは変えず、問題は解決しました。

ということで、サービスコンセプトを理解し、それをデザイン・技術の力でアプリとして結実させると楽しいよ、という話でした。勉強会ではたくさんの質問をいただけ、楽しい会でした!

2013年10月8日火曜日

ボイジャー太陽圏ででたよ

こんにちは。
LTといえば普通は技術紹介、気になるサービス紹介が普通でしょうが
私はあさっての方向の紹介担当です。

たまには宇宙に思いを馳せましょう。

2013年8月12日月曜日

第3回、合同勉強会を開催しました



はじめまして。技術チームのガブです。先日、第三回合同勉強会を弊社オフィスにて行いました。ビールやソフトドリンクを飲みながら、六名のすばらしいエンジニアの方々から、高度にテクニカルなお話を二十分間、楽しく伺うことができました。発表者の皆様を始め、今回の勉強会のために貴重なお時間と労力を割いていただいた方々に深く感謝いたします。

各プレゼンの模様を簡単にご紹介いたします。


1. 今村 雅幸 (株式会社Vasily CTO)さん





今村さんには、急増するユーザーに対応するべく、アプリケーションをスケールするテクニックをテーマに講演していただきました。やはり、VasilyのようなBtoCの場合、ID数の増加が急激すぎてやばいですね。スライドを見ていてゾクゾクしました。僕たちも早く新しいサービスでこんな悲鳴を上げてみたいです。ちなみにVasilyさんの場合、tumblrのinboxモデルを参考に独自の実装をされていました。tumblrのarchitectureについてはこの記事なんかが参考になります。


2. 林 孝之さん



林さんには今回、ごく少数の人に知識や情報が集中せずに生産性を上げていく一つの解として、ペアプログラミングについて発表していただきました。
僕は今、実際にペアプロをやっていますが自分で書いたコードよりも明らかに美しく、読みやすく、バグの少ないコードを書く事が出来ています。林さんがプレゼン中に言っていた、「ペアプロじゃないと怖くてコードを書けない」という事を実感します。一方で、相方とのスキル差が絶望的にあり(僕が低い方です... )、とても疲れるし、理解できていないまま進んでいってしまう時があります。この辺りの課題をどうするか、林さんに改めて質問してみたいなと思います。




3. 津留 一仁 (株式会社マインドパレット リベロエンジニア)さん


津留さんにはAngularJSの特徴、ユースケースについて、プレゼンしていただきました。
Gitコマンドをバシバシ叩きながら、分かりやすいサンプルデモをいくつも交えて発表していただき、(皆さんに共通しますが)とてもイメージしやすく素敵なプレゼンでした。
AngularJSはHTMLそのものがテンプレートである事や、パイプラインで検索フィルターを追加できる事(すごく簡単そう)など、簡単に始められて便利な機能満載。開発していて楽しい感じが伝わってきて思わずダウンロードしてしまいました。




4. 竹内 秀行(ユーザベース)さん


竹内さんのトピックは、みんな大好きDynamoDBの解説です。前々回、株式会社マインドパレットの神尾さんにSimpleDBの恐ろしさを存分に教えていただいた僕たちは、「SimpleDB、ダメ、ゼッタイ」を合い言葉にDynamoDBを採用する事にしました。そんな訳で今回、DynamoDBの素晴らしさを皆さんにお披露目する場になりました。例えば、DynamoDBのキャッチフレーズの一つに「支払いは実際に使用した分だけ。最低料金は不要です。」というものがあります。素晴らしい!さすがAmazon先生!ところが実際の料金プランを見ていくと、事前に利用枠を買って使うというこの矛盾!世の中そんなに単純じゃないんだぜ!という先生からのメッセージを胸に、僕たちはまた一つ大人になったのでした。



5. 加藤じゅんいち(id:j5ik2o)さん


加藤じゅんいちさんは、Domain Driven Design(DDD)について、お話していただきました。最近、僕の入っているプロジェクトではTDDを始めていますが、DDDの基本的な考え方であるドメインモデルを中心に設計していけるとコードがすごくキレイになります。抽象化と共通化が適切にできる事に感動するとともに、今まで自分が書いたものは何だったのかと小一時間(ry
ただ、まだまだプレゼンしてもらった世界には全然到達できていないので、ご推薦のを買って読もうと思います。



6. 矢野勉 (代表取締役 株式会社シェルフ)さん



Lispには括弧が多すぎる。

矢野さんのプレゼンはそんな風にして始まりました。
そうしてClojureをおもしろおかしく説明した後で、唐突に矢野さんは言いました。
「これで皆さんは明日からClojureが書けますね。もう知らないなんて言えないですよ」
動揺する会場。微笑みの矢野さん。
会場からの「結局、括弧多くないですかClojure」「そのサービス、Railsならすぐ作れるんじゃないですか(Clojure生産性低くないですか)」という優しいコメントに矢野さんは「括弧の種類がいっぱいあれば読みやすいから問題ない!」、「Javaの資産がそのまま使えるから生産性は超高い!」とClojureへの愛とモヒカンぶりを遺憾なく発揮し、万雷の拍手を浴びておりました。
僕はそんなロックな矢野さんが大好きです!








上記のメインプレゼンの間に、懇親会とライトニングトーク大会も行いました。

板倉さん、荒井さん(Vasily)、長澤さん(UB)、石橋さん(UB)、加藤さん(UB)にLTを行っていただきました。

次回、第4回合同勉強会は10月頃に行う予定です。


ご興味のある方は是非ご参加ください。スピーカーの方も大募集中です。

連絡先はこちらです:technology@uzabase.com

2013年5月23日木曜日

世界最大の素数とその見つけられた方法

こんにちは。
LTにて、ほかの方は最新技術など面白いものを紹介してくださるので
私はあさっての方向の紹介を担当しようと思います。



ユークリッドの補題

スライドの中で何の断りもなく登場することの補題ですが、意味は
正の自然数nが素数pで割り切れ
n = ab (a > 1, b > 1)と分解できるとき、pはa, bの内の少なくとも一方を割り切る。
というものです。

「0がn個続いたあと1がn個続く」を正規表現にできるか?

こんにちは。前回に引き続きたぬきです。
週次LTの担当ということで、計算機科学の基礎を紹介してみました。

切り口として、正規表現まわりをやってみることにしました。Uzabaseは情報プラットフォームサービスSPEEDAを展開しており、どのエンジニアもデータベース周りの知識を持っているため、正規表現は慣れ親しんだものの1つであるからです。

具体的な問題として、「0がn個続いたあとに1がn個続く」を正規表現にできるか?をテーマとしました。

お話の流れとしては、(1) 正規表現は有限オートマトンに変換可能、(2) 有限オートマトンには必要条件がある、(3) 上述の問題は有限オートマトンの必要条件を満たさず、正規表現にはできない、という流れです。

ポンピング補題
オートマトンの復習および「(1) 正規表現は有限オートマトンに変換可能」については、文章よりスライドを見てもらえば十分かと思いますが、「(2) 有限オートマトンには必要条件がある」「(3) 上述の問題は有限オートマトンの必要条件を満たさず、正規表現にはできない」については口頭で話した部分を補足したいと思います。

(2) 有限オートマトンの必要条件のひとつに、ポンピング補題というものがあります。ある有限オートマトンの状態数をpとすると、そのオートマトンに認識される(受領される)文字列のうちp以上の長さの文字列は必ずポンピング補題の3条件を満たします。

条件のうちの1番目「各i≧0についてx(y^i)z∈A」についてもう少し意味を補足しましょう。まずAはある有限オートマトンが認識する(受領する)文字列の集合です。また、x(y^i)zとは、文字列xの後に文字列yが0回以上繰り返し続き、最後に文字列zがあるということです。つまり、1番目の条件は、ある有限オートマトンに認識される文字列は必ず、x(y^i)z∈Aを満たす文字列x, y, zにわけられるという意味になります。

ポンピング補題の証明は、スライドに記述した迷路のような図でも直感的に理解できるかもしれませんが、より詳しい証明は後述の本を御覧ください。

さて(3)に入り、「0がn個続いたあとに1がn個続く」がポンピング補題を満たすか調べてみましょう。もし「0がn個……」を満たす有限オートマトンがあるとすれば、その条件を満たす文字列で長さp以上のものはすべてポンピング補題を満たすはずです。

ここで、0がp個続いたあとに1がp個続く文字列sを考えてみましょう。sは明らかに「0がn個……」を満たします。またsは長さp以上なのでポンピング補題も満たすはずです。つまり「各i≧0についてx(y^i)z∈A」も満たすはずですが、どんなyならばそんな条件を満たすでしょうか?

実はその条件を満たすyは存在しません。もしyが0からだけ成るとすると、i≧2では文字列に含まれる1の数よりも0の数が多くなってしまい、Aに含まれることができません。yが1からだけ成るとしても同様です。あとはyが0と1から成った場合だけですが、この場合、yが連続すれば0の前に1が出てきてしまうため、やはりAに含まれることができません。よって、いかなるyも条件を満たしません。

以上のことから背理法により、「0がn個……」は有限オートマトンでないことが示されました。よって「0がn個……」は正規表現にできません。

まとめ
LTの時間的な制約から正確な定義などを説明せずに話を進めてしまいましたが、正確な定義や証明を理解していくと、とてもシンプルかつ奥深い世界に触れることができます。スライド内でも簡単に紹介していますが、下記の本がオススメです。