Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

社内ハッカソン開催しました(2018年spring)

alt

社内ハッカソン開催しました(2018年spring)

あいさつ

こんにちは。オプトテクノロジーズ エンジニアの山口です。
市ヶ谷のオフィス近くに魚金がオープンしていい感じです。

オプトテクノロジーズでは数ヶ月おきに社内ハッカソンを開催しています。
つい先日も行われたので、この記事ではその様子をお届けします。 ちなみに前回は合宿形式でした→開発合宿 in 那須塩原

朝会

朝はチーム決めをしました。事前にメンバー間で話し合ってチームを組んでいるところもあれば、当日にチームリーダーが説明をしてメンバーを引き込んでいるところもありました。 今回の社内ハッカソンはテーマ自由。2人以上のチームで取り組みました。
チーム決め

当日の様子

ごろーん

ごろーん

発表

発表

当日は8チームが参加しました。
各チームの取り組みをご紹介いたします。

チーム名 テーマ
精神 。 自分 の 突破 ! 。 Valueジェネレータ作る
こころおきなくしねるチーム スクラム雑務改善
DarkSideScience 広告業界のダークサイド
Juliaチーム Juliaでkaggleに挑戦
最強のプレゼンタイマー プレゼンタイマー
Web Speech APIで語学アプリ開発 Web Speech API
チーム偽装結婚 ?
スマートスピーカー枠 GoogleHome アプリ

精神 。 自分 の 突破 ! 。

今年発表したオプトのValueに乗っかって、API から新たな文言を自動生成する仕組みを構築しました。
新しく考える工数を0に削減できるそうです。
Valueは社員が大事にしているものから決めており、
この時の草案をもとにコーパスを作成(mecabで分かち書き) keras にて LSTM で試しました。
生成したものをいくつか紹介します

  • 自分を巻き込めパフォーマンスあれ
  • Give自らGive&Give!!
  • プロフェッショナル で チーム を 強く する 。
  • 点 から 考え抜く !

ちなみにチーム名は自動生成した1つにしたようですね。

こころおきなくしねるチーム

こころおきなくしねるチーム

このチームは業務で KPI の達成状況や運用の自動化に積極的に取り組んでいており、 ほとんどが日々入力するドキュメントから自動的に算出され、可視化されています。
今回はアラート発報時に機械的に記録できるものは予め記録しておき、 対応者は名前を書く程度の労力で済むような自動化をしました。
Slack から SpreadSheet へ自動取り込みされてアラート対応に専念することができます。
終始ペアプログラミングして開発していました!

DarkSideScience

alt

筆者はこちらのチームに参加していました。
闇のビーコンタグによってサイト閲覧者の動向をサーバーへ送信、
gif として保存されます
プライバシーの観点から実現化はしませんが、
プロモーションを最適化するために行動履歴全部を見てしまおうというコンセプトです。
設計のMTGで Firebase や HTML5 の API を使ったいろいろなアイデアが出ました。

Juliaチーム

Julia を使ったことのないメンバーが kaggle に挑戦しました。
House Pricesというアメリカの家の価格の回帰問題です。
特徴量が50-80あり、駅からの近さなどから価格を予想します。
submitまで行いました。

最強のプレゼンタイマー

presentimer

愛用しているウサギとカメのプレゼンタイマーを手放せない!
Qiitaスライドも使いたい!
とのことでQiitaスライド上で動くネコとネズミが追いかけっこするタイマーを作成
絵も手作りです

Web Speech APIで語学アプリ開発

alt

Web Speech APIの音声合成APIと音声認識APIを活用して、実用的な語学学習支援アプリを開発してみようというチームです。
音声合成でスピーカーから例文を読み上げさせ、ユーザーが音声認識でマイクから吹き込むことで発音練習できる、シンプルなWebアプリを作りました。
Webフロントエンド技術のR&Dも兼ねて、チームメンバーそれぞれに業務で使ったことのない技術スタックでSPA開発に挑戦しました。

screenshot_nagasawa

phoneq_speaking_mode

チーム偽装結婚

チーム偽装結婚1

チーム偽装結婚2

今回のハッカソンでは2人以上でチームを組んでくださいと伝えていたため、
なんと個人プレーしたいがためにチームになっていたチームらしいです。
チーム決めの朝会で「同じテーマをしたいチームが組めれば離婚できる (※)」と申しておりました。
※ チーム名が偽装結婚なので

  • Drag&Drop できる angular ディレクティブを作成
    • 「資料はないのでPRをみてください」
    • 後で npm publish する(現在公開されています)
    • リポジトリ: opt-tech/ng-file-binder
  • プロダクトで利用している URL 判定の改良
    • 「チームメンバーといま初めて会話しました」
    • エンコードされていないもの、ShiftJISでエンコード済で URL としてはいけないパターン
    • サイト内検索のクエリパラメーターの除外機能
    • URLじゃないURL的なものは URL Like という Class にする
    • RFC 準拠しているもの ValidURL とする
    • といった実装をしていました

スマートスピーカー枠

スマートスピーカー枠

GoogleHome での開発をしました
途中からチームメンバーが退勤して1人チームになるため、
ひとりぼっちでもさみしくない機能を実装したそうです
デモでは次のように GoogleHome が会話してくれました

  • 「○○さんをほめて」->「いつも尊敬しています」
  • 「○○さんどう」 -> 「オプトテクノロジーズは○○さんなしでは語れません」
  • 「ひとりぼっち」 -> 「大丈夫ですよ私がいますよ」
  • 「つかれた」 -> 「大丈夫ですかあまり無理はなさらないでくださいね」

まとめ

発表後はよかった発表を投票し、「Web Speech APIで語学アプリ開発」が1位を獲得しました、おめでとうございます!!!
今回のハッカソンで課題の解決や、取り組んでみたかった技術にふれることができました。

株式会社オプトでは、エンジニアを随時募集しています。エントリーはこちら(新卒 / 中途)から。
※カジュアル面談ご希望の方は、補足欄に「カジュアル面談希望」とご記載ください。