サイボウズのエンジニアサマーインターン 2016に参加しました

blog.cybozu.io

8月22日(月) 〜 26日(金) の回に参加していました。

私が参加したのはWebアプリケーション開発コースで,kintoneに新機能のプロトタイプを実装するというのが課題でした。

1日目

初日から台風に見舞われました… 私が出勤した頃には雨はそれほどひどくなかったのですが,出勤した直後くらいから雨がひどくなってきて,社員の方にもリモートワークの方が何人かいらっしゃいました。

この日はオリエンテーションをやって開発の進め方についての講義を受けたあと,kintone開発チュートリアルのようなものをやりました。kintoneは巨大なアプリケーションなのでIDEの機能を活用しなければソースコードを追うのが不可能な規模でしたが,設計もソースコードも洗練されていて読みやすかったです。

1日の最後には「ふりかえり」活動がありました。もともとはkintone開発チュートリアルは初日にやる予定ではなかったそうなのですが,前回 (8月1日 〜 5日の回) でのふりかえりの結果,初日にやることになったそうで,改善の反映のサイクルが早いなと思いました。

blog.cybozu.io

2日目

お客様から頂いた要望をもとに実装したい新機能を選び,その仕様書を書きました。

「本当に必要なのはその機能なのか(問題を解決するためには別の機能を実装したほうが良いのではないか)」とか「機能の名前はそれでいいのか」とか「そのUIを見て挙動を勘違いする人がいないか」といったような,私が普段やっているプログラミングではここまで考えないようなことを議論できて良い体験になりました。

3日目

終日ひたすら実装していました。

4日目

最低限の機能のみを実装したプロトタイプが実装できたので,機能をもっと作り込むか,テストを書くか相談したのですが,私がE2Eテストを書いたことがなかったこともあり,せっかくなのでSeleniumを使ってブラウザテストを書くことになりました。

blog.cybozu.io

ブラウザテストを書くためにはXPathCSSセレクタをゴリゴリと書かないといけなくて大変なんだろうな〜と思っていたのですが,ページ内のコンポーネントを抽象的に表現したクラスが用意されていて「kintoneアプリの新規作成ボタンを押す」みたいなメソッドを呼ぶだけでテストコードが書ける設計になっていました。これはPageObjectパターンというデザインパターンだそうです。

PageObjects · SeleniumHQ/selenium Wiki · GitHub

5日目

メンターにして頂いたコードレビューへの対応をした後,社員の方々と品質保証/セキュリティコースのインターン生の前で成果発表をしました。

インターンを通しての感想

基本的にプログラミングがメインで楽しめた

仕様書を書いたりミーティングや講義が定期的にあったりしつつも,基本的にはプログラミングをずっとやっていたので「(退屈だなぁ… コード書きたいなぁ…)」みたいになることは全くありませんでした。

サイボウズ社員はサイボウズ製品が好きすぎる

インターン期間中はメールやスケジュール管理のためにOutlookを開くことは全くなく,全てサイボウズ製品で完結していました。

  • 今日のスケジュールを確認する ← ここだけGaroon
  • お客様からの要望リストを確認する ← kintone
  • タイムカードに記入する ← kintone
  • 日報を書く ← kintone
  • 成果発表会の実況スレッド ← kintone

最近↓のようなツイートが出回っていますが,Excelをkintoneに置き換えるとサイボウズになるのでは?

机にフィギュアを置いてる人がいなかった

初めてオフィスを見学したIT企業が 天井からメイド服がぶら下がっている会社 だったので僕の感覚がおかしいのかもしれませんが,そこまでぶっ飛んだ机はありませんでした。ぼくはこっちの雰囲気のほうが整理整頓されている感じがして好きです。

ただ ジェットコースターの模型 は置いてありました。

まとめ

5日間とても充実していました。オススメのインターンシップです。