サイボウズ開発インターンに参加しました

はじめまして、東京大学大学院の戸ヶ崎 仁宣です。今回、私は計10日間のkintoneチーム開発インターンに参加していました。インターンのテーマとしては「kintoneに対しての静的解析ツールの導入」で行いました。

インターン戸ケ崎

インターンの動機・きっかけ

  • 進路について非常に迷っていたところ、イベントでサイボウズのエンジニアの方とお話する機会があり、相談をするうちにサイボウズに興味を持ちました。
  • 会社の説明会に参加してみると仕事の内容と職場の雰囲気が面白そうでインターンに参加してみたいと思いました。

インターンの参加からお題の決定まで

インターンに応募しようと思ったところ開発経験がほとんど無く、自分のスキルとインターンでできる事に不安を感じていました。そこで、インターンのテーマやできる事などの相談のメールを送ったところ実際にサイボウズの本社でエンジニアの方と相談することになりました。

インターンのテーマは、エンジニアの方が実際に開発現場で困っていることや導入したいツールなどをお話しながら、私ができる事とやってみたいことをすり合わせて検討しました。

インターンの内容

導入するツールは事前に指定され、静的解析ツールのSonarQubeとGitとJenkinsの連携を行いました。SonarQubeとはJavaをメインとした静的解析ツールでソースコードのコード行数、ファイル数、静的解析ルールの違反、複雑度、重複行数、ファイル、修正にかかる工数の見積もりなどの解析結果をブラウザ上で見ることができます。またプラグインが豊富にあり、既存のツールとの連携や可視化の方法など自分でカスタマイズができ柔軟に解析が行うことができます。

実際にやったこと

  • GitHubにkintoneのソースコードがpushされたらJenkinsでSonarQubeが実行されるようにGitHub,Jenkins,SonarQubeをそれぞれ設定(kintoneチームでのGitHubとJenkinsの連携についてはこちらも参照)
  • 解析結果を元にkintoneのバグの発見
  • 発見したバグを修正するプルリクエストの作成
  • 前のビルドと比べて警告の数が増えている場合にはビルドを失敗させる
  • SonarQubeのWebAPIを用いて、git上のkintoneの過去のコードに対してもソースコードの行数や静的解析のルールに違反している件数などを解析し、他のオープンソースのソースコードの解析結果と比較してどのような傾向があるかの考察

インターンの全体の感想

サイボウズ

サイボウズ社内で使われているkintoneのスレッドを眺めていると会社全体が積極的にコミュニケーションをとっている感じました。また勉強会が非常に活発で、業務中に勉強会が行われ僕も飛び入りで何度も参加させていただき楽しかったです。

Java

普段はC++とPythonでコードを書いていて、あまりJavaには触れたことはありませんでしたが、実際にコードを読んだり調べたりするとJavaはライブラリが豊富で統一的に書けてチーム開発や大規模開発に向いている言語だと思いました。

Git

研究のソースコード管理にGitを使っているのですが、ほとんど理解せずに使っていた事に気づきました。知らない機能などが多数あり非常に高機能で仕事をする上では必須のツールだと思いました。

インターンの反省点

SonarQubeで特定のルールに引っかかった場合にビルドを失敗させるなど、既存の解析ツールでできる事に時間をかけてしまいました。SonarQubeを詳しく精査するのかkintoneのコードを解析するかなど、どっちに重点を置くのか迷ってしまい、kintoneのコードを解析するならば、他のソースコードと早くから比較すればkintoneの独自の傾向などの考察やデータの収集などに時間を割くことができたと思います。

インターンの感想

大規模製品のコードを読むことが経験でき、また解析結果からkintoneの実際のバグを発見でき製品に対して貢献できた事が嬉しかったです。問題点の発見→修正までの実際の仕事のイテレーションが見れて良かったです。解析したデータを他人にどう説明するか・分かりやすく説明するかなども非常に重要だと思いました。

インターンの最終日サイボウズ・ラボの方と自分の研究でやっている事、趣味のプログラミングコンテストなどを話したり、サイボウズ・ラボで行っていることや学生時代をどう過ごしていたなど、またどう物事を突き詰めていくなど一時間半ほど雑談ができ非常に刺激的な体験でした。

まとめ

インターンのテーマを決める段階から相談に乗っていただきありがとうございます。またメンターの方や他のエンジニアの方に適宜インターンで詰まった場合、相談に乗っていただき感謝しています。

今回のインターンで学んだ様々なツールや開発の流れ、エンジニアとしてどう突き詰めていくかは大変参考になり、これからの人生に活かしていきたいと思います。