2019年2月26日から28日までの3日間,ソフトバンク・テクノロジーでインターンをしてきました.
きっかけ
私は今までいくつかの会社でインターンをしてきました. しかし,それらの会社はどれも自社開発がメインの業務であり,B to B の会社ではありませんでした. そこで,B to B の会社はどのような環境で作業されているのか興味を持ちました.
もう一つ,興味を持つきっかけになったものとして セキュリティ というものが挙げられます. 私は,セキュリティ・ミニキャンプというものに以前参加したことがあります. ソフトバンク・テクノロジーは,このセキュリティ・キャンプのスポンサーでした.
会社紹介
ソフトバンク・テクノロジーは,「データアナリティクス」「セキュリティソリューション」「クラウドソリューション」という3つの事業領域を持っています. これらの事業領域において,様々な案件を受注していているようです. 某省庁とも取引がありそうですね.以下のウェブサイトからわかります. プロジェクトストーリー
インターン内容
「アプリーケーションエンジニアを知る」というテーマのもとに,AzureとC#で作られたアプリケーションの拡張を行いました. 3日間で,拡張内容の提案や工数の見積もり,開発,テスト,納品とウォーターフォール・モデルの流れを知ることができる貴重な体験でした.
インターン生が 4 人チームとなり,チーム同士で各工程での出来を競いました.
1日目
Azure
はじめに Azure に関しての基礎的な講義がありました. 私はAzureを一度も使ったことがなかったのですが,この講義で大体の概要を把握しました. サービス間の協力な連携が魅力だと,説明されたことを覚えています.
提案書
その後チームでの作業が始まりました.はじめは提案の作成です.
提案の段階で,どのようなことをそのような手法で実現するのかということを大まかに決めます. この作業は,顧客の要望を正しく理解し提案を作成する必要があります. 顧客のニーズに対して提案が的外れなものであると,提案が無駄になります.
提案内容が決まれば提案書の作成です. 開発の背景と目的.課題に対する解決方法,機能面と非機能面でどのように変化するのかを相手がわかるようにまとめます. 提案した内容が相手に受け入れられなければ仕事がなくなってしまうので,提案書は非常に重要だとおっしゃられていました.
その後,提案書とともに顧客に提案を説明しに行きます.
この段階で,エンジニアは
- 提案記載(システム部分)
- 見積
を担当することが多いそうです.
外部設計・内部設計
提案書が承認されれば,受注となります.
受注が決まれば即コーディング とならず,どのように動作するのかを考えます.
設計をする上で考えることは以下の 4 つです.
- 動くように計算する
- 取捨選択をする
- 効果的に配置する
- 依存関係をコントロールする
外部設計では実際の見た目の変化,内部設計では処理する部分のロジックを考えます. 内部設計をする際,フロー図を書きます.このとき PlantUML というものを使うと簡単に作成できることを教えていただきました.
2日目
この日は主にプログラミングをしていました.
製造
設計が終われば,実際のコードを書きます. 仕様書通りになるように変更していきます.
私は C# についてあまり知識がありませんでしたが,コードの把握は他のチームメンバーより早かったです. そこで,私はチーム全体として生産性が上がるように説明をしたりプログラミングの補助を積極的に行いました. 当然,自分のタスクも消化しました.
3日目
テスト
製造が終わると作った機能が設計通り動作するのかをテストします.また,バグが出るかもしれない動作フローを準備しておき,バグが出ないかどうかの確認も行いました. バグが出た場合は製造工程に戻り修正を行います.
納品
動作するアプリケーションが作成されれば,顧客に確認してもらい納品となります. 私たちのチームは,提案書の段階で多くの機能を盛り込んでしまったため 完全な形で納品することができませんでした.
フィードバック
書くことに少し抵抗がありますが,スキルについては「断トツで深い」という評価をいただきました.チームでの活動において,一人ひとりのメンバーと情報を共有している点も評価していただけました. 一方,でタスクの管理が出来ていないとのマイナス評価も頂きました.
私達のチームは,提案の段階で多くの追加機能を提案してしまいました.そのため,製造の時間が終了してもコーディングが終わっていないということになりました. 他社との取引を行っているという状況において終了していないことは,許されることではありません.
感想
インターンにおいてチーム開発を行うことは3回目であり,チームメンバーとのコミュニケーションや情報共有の重要性を理解していました. なので,今回のチーム開発においてこれらのことを実践できたことは素直にうれしいです.
一方で,適切にタスク管理が出来なかったことについては 反省しています.今回のインターンでは,チームメンバーのスキルレベルがわからない状況でチームリーダーや提案内容を決める必要がありました. そのため状況把握を誤りました.更に修正を先送りにしてしまいまいした. 今後このようなことを避けるためには,まず状況の把握しチームリーダーが理解できるように話す.もしくは,自分自身がリーダーになってもいいのかもしれません.