CodeIQ感謝祭「ドワンゴからの挑戦状」についての解説

解答と解説
Q1 : 101
let a0
for (let i = 2525 ; i > 0 ; i --) {
if (2525 % i === 0 && 5252 % i === 0) {
a0 = i
break
}
}
最大公約数を求める有名な方法に「ユークリッドの互除法」があり、そちらを使えばより計算量少なく求めることができます。
function gcd(x, y) {let rwhile (y > 0) {r = x % yx = yy = r}return x}const a1 = gcd(2525, 5252)
Q2 : 2859870693
const TWO_POW_32 = Math.pow(2, 32)let arr = [a1]for (let i = 1 ; i <= 1000 ; i ++) {arr[i] = (arr[i - 1] * 2525 + 5252) % TWO_POW_32}const a2 = arr[1000]
Q3 : [2355222565, 3890716245, 434637493, 1285940997, 3265016661, 5746901]
const a3 = [...'dwango'].map(v => arr[v.charCodeAt(0)])
Q4 : 2110379477
const sortedArr = arr.sort((a, b) => a - b)const a4 = sortedArr[500]
問題 : 3322
const answerArr = a3.concat([a1, a2, a4])const answer = ((answerArr.reduce((a, x) => a + x))% TWO_POW_32).toString().slice(0, 4)
蛇足
a1 = 2525.gcd(5252)puts "Q1 : #{a1}"
arr = [a1]1.upto(1000) { |idx| arr[idx] = (arr[idx - 1] * 2525 + 5252) % 2 ** 32 }a2 = arr[1000]puts "Q2 : #{a2}"
a3 = "dwango".each_byte.map { |idx| arr[idx] }puts "Q3 : #{a3}"a4 = arr.sort[500]puts "Q4 : #{a4}"
answer = (a3.concat([a1, a2, a4]).sum % 2 ** 32).to_s[0..3]puts "Answer : #{answer}"
まとめ
ドワンゴではエンジニアを積極的に採用しています。「解けた!」という方で、お仕事をお探しの方は、経験者採用の募集情報もぜひご覧ください!
ドワンゴのプロダクト開発インターンシップについて(第1クール)

インターン概要

成果物
anancus

ユーザーは投稿欄に新設されたボタンを押すと、簡単にアンケートを作ることができます。質問文と最大4つの選択肢を入力すると…

このように、タイムラインに投票ボタンつきの投稿が現れ、30秒のあいだ回答を受け付けます。締め切りを過ぎるとタイムラインに結果が現れるので、ぜひみなさんも試してみてください。

mahout
PHP
- akifuji613
- yuki540 (Web)
- KageShiron (GitHub / Web)
こんにちは。チームPHPです。
チーム名は、Mastodonが象の祖先ということで、PHPにしました。
我々がこのインターンシップでどんなことをしたかを報告させて頂きます。
不満とその解決
まず、現在のfriends.nicoに対するユーザーが抱える不満を挙げていきました。その結果、「friends.nicoユーザーはローカルタイムラインを中心に見ているのに、ウェブクライアントはPCの全画面で見ることを想定していて、省スペース派、ネイティブアプリ派のユーザーが不満を抱えているだろう」という意見でまとまりました。
その不満を解決するために、「frineds.nico専用の省スペースクライアントアプリ」を作ることにしました。ここでいう省スペースとは、画面の端に置いて鑑賞できるようなものを想定しています。また、Mastodonの全てのインスタンスではなく、frineds.nicoに限定したのは、よりユーザーの体験を具体的に想像できて、プロダクトとしての魅力を高められると思ったからです。
コンセプトを叶えるための機能として
- 省スペース
- 高いカスタマイズ性
- friends.nicoに特化
の3点を意識しました。省スペースはミニマリズムとして当然です。しかし、どのような省スペース性や機能が欲しいかというのは個人によって結構異なるので、それぞれの需要に応えられるようにカスタマイズできるようにしたいと考えました。
成果物
実際に開発したものが、これです。開発はメンバーの技術とマルチプラットフォームでの動作を考え、Electronを使用しました。フロントの実装にはマストドン本家と同様にReactを採用しました。

左が、僕らの作ったアプリのホーム画面です。ウェブクライアントでは別々になっているローカルタイムライン、ホーム、通知を1つのタイムラインで見れるようにして、画面の端に置いておける省スペースアプリとなりました。また、タイムラインの1カラムも出来るだけ細くしました。しかし、friends.nico特有のニコるをしやすいように、ニコるボタンは大きめに設定しています。

これは、設定画面です。他画面が必要な時はドロワーを横から出しています。friends.nicoではトゥートの更新が非常に速いので、画面遷移ではなく画面拡張をすることによって、タイムラインを常に表示し、話題においてけぼりにならないようにしました。設定からは、何をタイムラインに流したり、通知するかを選べたり、アプリのテーマカラーを変えられたりします。

これは、ホワイトバージョンです。α版を使ってくれた人からは人気がありました。ちなみに、タイムラインの右上のピンボタンをクリックすることで最前面表示もできます。これもレビュー会で好評だった機能でした。
成果発表会を通して
成果発表会を行い、メンターの方からフィードバックを頂きました。僕らは、オープンソースとして公開することを目指しましたが、残念ながらそれは叶いませんでした。
しかし、省スペース性の追求という、自分たちのコンセプトは間違っていないことは開発を通して感じました。しかし、現段階でユーザーが満足に使えるレベルには達していない、コードが汚くて今後誰かが引き継げるような状態ではない、というのが問題でした。反省点としては、開発の全体の構成や、メンバーの技術力を考慮した予定管理ができず、行き当たりばったりの開発になっていたことです。悔しいですが、これからの開発に活かせれば良いかと思います。
最後に
他の社員さんと同じ部屋で開発を行い、多くの社員さんが自由に仕事をしているのを肌で感じる4週間でした。僕らも伸び伸びとプロダクトの考案・開発をしながら、的確なフィードバックを受けられて学ぶことの多いインターンシップとなりました。このような機会を提供していただき、本当にありがとうございました。
まとめ

こんにちは、ニコニコ生放送開発の太田です。
今回は新配信移行の延期、延長と予約の無料化の件についてお伝えさせていただきます。
■新配信全面移行を延期しました
8月24日に予定しておりました新配信全面移行ですが、移行日を延期させていただきました。ユーザーの皆さんからのご意見ご要望にて、新配信で安定した配信や視聴ができないとの多くのお声をいただいておりました。
新配信の全面移行前にまだ改善出来る余地があり、皆さんに安心して新配信で生放送を配信・視聴していただける状態にするため、延期させていただくこととなりました。
新配信全面移行の予定日は、現在まだ未定とさせていただいておりますが、確定次第ニコニコインフォにてご案内させていただきます。
また、新配信は旧配信から仕様が大きく変更されるため、ユーザーの皆さんにはご不便をおかけしてしまい、大変申し訳なく思っております。ヘルプやインフォでの情報の拡充を図って参ります。
詳細は ユーザー生放送『新配信』への移行延期のお知らせ にてご確認ください。
■新配信の延長と予約が無料化されます
8月24日より新配信での番組の予約が開始されます。前回ご案内差し上げた通り、新配信での番組は予約・延長が無料になります。
なお、大変恐縮ですが旧配信につきましては無料化の対象外となります。
まだ新配信をお試しされたことのない方は、この機会に是非新配信をお試しいただければと思います。
こちらにつきましても詳細は 【8/18更新】ニコニコ生放送の番組延長、配信予約を無料化します にてご確認ください。
■最後に
現在もユーザーの皆さんから新配信に関するご意見ご要望をたくさん頂戴しております。
私達生放送開発者も毎日拝見させていただき、チーム内で検討をさせていただいております。本当にありがとうございます。
今後も皆さんの率直なご意見・ご要望をこちらからお寄せ下さい。
よろしくおねがいします。
月別アーカイブ
- 2018年11月のブロマガ記事(1)
- 2017年10月のブロマガ記事(2)
- 2017年09月のブロマガ記事(2)
- 2017年08月のブロマガ記事(4)
- 2017年07月のブロマガ記事(3)
- 2016年12月のブロマガ記事(1)
- 2016年07月のブロマガ記事(1)
- 2016年06月のブロマガ記事(1)
- 2015年12月のブロマガ記事(1)
- 2015年07月のブロマガ記事(1)
- 2015年05月のブロマガ記事(1)
- 2015年01月のブロマガ記事(1)
- 2014年11月のブロマガ記事(2)
- 2014年10月のブロマガ記事(2)
- 2014年09月のブロマガ記事(1)
- 2014年08月のブロマガ記事(2)
- 2014年07月のブロマガ記事(3)
- 2014年06月のブロマガ記事(1)
- 2014年03月のブロマガ記事(1)
- 2013年11月のブロマガ記事(1)
- 2013年10月のブロマガ記事(2)
- 2013年09月のブロマガ記事(1)
- 2013年08月のブロマガ記事(3)
- 2013年07月のブロマガ記事(1)
- 2013年06月のブロマガ記事(2)
タグ
- ドワンゴ(33)
- dwango(33)
- engineer(27)
- エンジニア(27)
- ご報告(7)
- 新配信(7)
- kbkz_tech(4)
- 動画検索(4)
- ニコニコ動画(4)
- Scala(4)
- 歌舞伎座.tech(4)
- Chef(4)
- ハッカソン(4)
- hackathon(3)
- インフラ(2)
- C++(2)
- 研修(2)
- はてな(1)
- internship(1)
- 新人研修(1)
- 勉強会(1)
- カンファレンス(1)
- SIGGRAPH(1)
- ICML(1)
- CVPR(1)
- インターン(1)
- mastodon(1)
- friends.nico(1)
- programming(1)
- プログラミング言語(1)
- プログラミング(1)
- tokyo_technical_samurai(1)
- robot(1)
- elasticsearch(1)
- Unity(1)
- OculusRift(1)
- インターンシップ(1)
- event(1)
- 将棋(1)
- API(1)
- ma9(1)
- ドワンゴ技術部(1)