インターーーーーーーーーン‼︎まとめpart7
やっほー。先週に続いて1週間ほどインターンに行っておりました。
何していたのかというのはここ最近のエントリから大方想像がつくと思います。
そうです。Javaの基礎を勉強しておりました。細かいことはこれから徒然なるままに書いていきます。
ではレッツゴー。
インターン先はとあるベンチャーで開発メインの企業です。なんと参加者4人。
この企業,言い方は失礼ですが,オフィスは雑居ビルの2フロアのみで各フロアともとても狭い。ホームページが綺麗だった分ちょっとがっかり。
しかし,取引先には先週までお世話になった企業をはじめ日本有数の大企業が並んでおりました(まあ誰も知らない企業なんか載せないわな)。業務形態としては,プロジェクト参画によりチームで客先に常駐しての開発がメインです。こんな感じで普段は本社オフィスに人がそんなに多くないので,小さくても大丈夫なようです。開発実績の領域はかなり幅広い感じでした。会社の説明をしてくれた採用担当者も普段は客先常駐エンジニアで,常駐型SEのつらいところを語ってくれましたが,割と生々しかったのが印象的でした。
それでは1週間何をしていたのかをみていきましょう。
ざっくりいうと冒頭にもあった通り,Java の基礎を勉強していました。
初日に演習問題を渡され,それを順に解いていき(コードを書く),社員にレビューしてもらうということを3日目までやっておりました。雰囲気的には競プロ的な問題を解く感じですかね。この間にちょこちょことアジャイル開発(という名のドミノ倒し)を体験したり会社説明をしてもらうなどのミニイベントもありました。
一通り基礎をやったので4日目からは4人で一つのプログラムを作り出したのですが,何と時間は4日目と5日目だけ。ブラックか。
何を作ったのかというと,カレンダーとTextCounterです。
カレンダーは,年月日の順に入力を受け取り,それらをサーバ側に渡してクライアント側には曜日を返すというもの。4年に一度の閏年を考慮してねという条件付き。割とよくありそうな感じ。そして,年月日の入力を受け取った際にその都度不正な値(ex. -2018年,13月,32日など)か否かをチェックし,全てでtrueとなった場合に曜日を計算して返すというメソッドを実装しました。この課題は4人それぞれで1つのクラスを分担して作ることにし,中の人はクライアント側のクラスを担当しました。サーバからの年月日の入力要求のメッセージを受信してコンソールに表示し、コンソールからの標準入力をサーバ側に送信、曜日の計算をしたサーバからの返事をコンソールに表示するというものです。
やる前は,まあ1人でもすぐに作れそうな感じだし割と簡単めかな?とか思っていました。(ググればサーバとの通信を確立させるコード出るし)
しかし,4人で作るとなると話は別でした…
認識のすり合わせを行わないといけないし,定期的に全員の進捗を把握しないといけません。正直めんどくさい。1人なら全く気にしないことも複数だと気にしないといけない。変数の名前も気を付けなければならないのです。競プロとの違いが大きい…
大規模プロジェクトでは当然の作業も慣れない4人だとなかなか効率が悪いです。
設計仕様書の段階で既に認識がズレているなんてこともザラに起こりました。まずはそこの擦り合わせと共有からスタート。
そんなこんなでコーディングを進めていったのですが,なんと1日で無事終了。
ちゃんと動いてくれました。途中でクライアントとサーバの接続がうまくいかないトラブルがありましたが,20分ほどで原因を特定し改修。参照資料のコードをゴリゴリ真似したものの,ちゃんと動いてよかったです。
次にTextCounterを作りました。どんな機能が実装されているのかというと,渡されたファイル内のコンテンツに対して,
・文字数チェック
・単語数チェック
・行数チェック
・各文字の出現頻度チェック
の四つを行います。私はもう1人と一緒にこれら四つの機能を実装していきました。(流石に1日ではキツくない?とか思いつつ…)
順調に進んでいたのですが、単語数カウンタが正しく動かないバグが発生し、ついに直せずインターンは終わってしまいました…
Javaはあらゆるところで使われているので,今回勉強するきっかけができて良かったですというのが今回の感想。もう少し付け加えると,Javaはかなり自由度の高い言語なので,書いているうちにだんだん楽しくなってきます。今回の基礎演習を踏まえてJavaの勉強も続けたいですね。