情報系大学生が在学中にしておけばよかった５つのこと

## 概要
あと数ヶ月で大学を卒業するので、在学中にしておけばよかったなと感じたことをまとめました。
主観ですので、参考までにどうぞ:bow:

## １．チーム開発
まずは、いわずもがなチーム開発です。会社に就職して、個人開発をすることはあまりないでしょう。
私は個人で開発することが多く、チーム開発経験が乏しいので、在学中にもっと挑戦するべきだったと後悔しています。

チーム開発は利用するツールが多く、使いこなすのが困難です。早い段階からチーム開発に慣れておくことで、仕事でスムーズに活躍できると感じています。個人開発はいつでも好きな時にできますが、チーム開発は仲間の予定も合わないとできません。積極的に経験を積んでいきたいですね！

以下では、チーム開発で利用するツールについて軽く紹介します。

### コミュニケーションツール
オンラインコミュニケーションツールはとても便利ですが、使いこなすのに多少時間を要します。
ビデオ通話での画面共有やファイル転送、ホワイトボード、計画・グループ・権限の作成など、意外とできることが多いです。

![オンラインコミュニケーションマップ.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705701/1572ca6b-c594-401e-3939-44ab4ac078b8.jpeg)
（出典：[【2021年最新版】テレワークの課題を解決する「オンラインコミュニケーションツール カオスマップ」を公開！](https://prtimes.jp/main/html/rd/p/000000027.000040457.html)）

私が初めて就活面接をした際、[Google Meet](https://meet.google.com/)を使用したのですが、画面共有で手間取ってしまいました。事前にブラウザに権限を付与する必要があるのですが、そのことを私は知りませんでした:sweat_drops:

普段からビデオ会議ツールを使用していれば、この様な失敗はしなかっただろうと後悔しています。
異なるツールでも、同じ機能の場合はだいたい似た様な操作なので、上記画像の１つのジャンルごとに１つのツールは触ってみるのがおすすめです。

### バージョン管理ツール
バージョン管理ツールも仕事では必須ですよね。これを利用しないとソースコードのマージがまあ大変。大学の授業で友人が手作業でマージしていて大変そうでした:anguished:

初めてGitを触った時なんてなにも意味がわかりませんでした。ブランチ？マージ？なにそれおいしいの？って感じでした。
私は個人開発でバージョン管理ツールとして[GitHub](https://github.com/)を使用していたのですが、サークルで初めてチーム開発をする際、複数人で利用する流れがよくわからず手間取りました。

就職前にある程度触っておけば、チーム開発での失敗を防げるでしょう。

## ２．開発仲間を作る
開発ができる仲間が欲しい！！！！！！！大学在学中の私の悩みでした。私の友人は開発を全くしない人が多く、いつも一人で開発してました。
一人だとモチベーションが出ず、開発さぼっちゃいますよね。複数人いた方がナレッジも多いですし得だらけです。

私の大学にはプログラミングサークルがあったので、サークルに入ることで解決しました。(コロナ禍で1年半しか在籍できなかったんですけどね😭)
他にも、ネット上で共同開発者を募ったり、開発をする友人を作ることも有効だと思います。[X(twitter)](https://twitter.com/home?lang=ja)には天才開発者がいっぱいいるので、コミュニケーションを図るのも成長につながりそうです。
最近だとLINEのオープンチャットなども便利ですね。私は、開発では無いですがOracle Java Goldの資格取得の際に利用していました。

そもそも先ほどのチーム開発をするという項目は、開発仲間がいないと実現できないので、やはり仲間を作ると言うのはめちゃめちゃ大切ですね。


## ３．競技プログラミング
学生にこそやって欲しい。競プロです。おすすめは[AtCoder](https://atcoder.jp/?lang=ja)ですね。競プロには以下の様に、多くの利点があります。やり得です。
私は大学３年生の頃から始めましたが、もっとはやく始めればよかった、、、と後悔しています。

#### 利点１．就活でのアピールに使える
***「競技プログラミングが趣味です。」*** この一言だけで中小企業の面接をパスできます。
それは流石に言い過ぎかもしれませんが:kissing:プログラミングが趣味というだけでIT企業からすると脈ありでしょう。

ただ、それを言葉にするだけでは証拠がなく信用を勝ち取れません。アプリを作るのは大変ですし、アピールになるレベルの作品を作るにはそれなりの技術力が必要です。でも競プロなら、自分のレートが証拠になります。ただただ毎週競プロに参加するだけでもある程度までレートは上がっていくので、まずは参加してみましょう！

ちなみに私は茶色の雑魚ーダーですが、面接ではどの企業からも好印象でした。
![スクリーンショット 2024-01-13 10.35.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705701/1d47bea1-d538-ffb7-cab7-191394794393.png)


#### 利点２．就活でのコーディング試験対策になる
最近の大手企業やベンチャー企業では、コーディング試験が主流になりつつあります。実際、私の就活時はそう思うくらい多くの企業でコーディング試験がありました。言葉では嘘がつけてもコードでは嘘がつけないので企業としては楽なんでしょうか。

ちなみに、AtCoderなどのサイトではアルゴリズム問題が主流ですが、就職コーディング試験では、その他にSQLやWebAPI、JSONの利用など、実務的な知識も問われます。
詳しく対策したい方は、下記の記事を参考にしてみてください。
[【新卒】アルゴリズム対策だけではコーディングテストに合格できない！](https://qiita.com/mm-saito-1204/items/7fa5f4636e66c6e37b32)

#### 利点３．技術力・コーディング力が上がる
- 競プロでは、問題の条件を考慮してプログラムを作成します。
- 実務では、お客さんや上流が提示する条件を考慮してプログラムを作成します。

似ていますよね。考慮するべきことは全然違うと思いますが、お客さんや仕様書と対話しているイメージで競プロに取り組めば、実務のトレーニングになりそうです。
私がアルバイトで下流を担当していて感じたのですが、下流を主として担当するエンジニアなら、実務より競プロの方が難しいのでは無いでしょうか？
実務にも活かせる競プロは最高ですね。

#### 利点４．楽しい
競プロは楽しいです。レートが上がっていって成長を感じやすいですし、新しく勉強したアルゴリズムの問題が出題されたときは脳汁が出ます。１回で100分や120分など、ちょっと時間がかかるのが難点ですがね。

AtCoderはだいたい土曜の21時から開始なんですが、、、土曜の夜なんて酒飲んでるわ！と、いつも思います。

## ４．デプロイ
アプリを作れても、公に公開するのって大学生からすると大きな壁だと思うんですよね。
私は結局なにもデプロイせずに大学４年間を過ごしてしまいました。サーバ用意して、配置して、いろいろ設定して、やっと公開できたらメンテナンスして、、、ってすごいめんどくさいですよね。

でも実務で作成したアプリは基本デプロイします。作って誰にも使われない、なんてことありえませんよね。
正直**私が今回の記事の中で一番後悔していること**です。めんどくさくてもデプロイしましょう。

![DevOps.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2705701/bd7fc9ec-0b2c-9b54-5cc4-01360374176c.jpeg)
（出典：[【図解】DevOpsとは？アジャイルとの違い](https://www.kagoya.jp/howto/it-glossary/develop/devops/)）

有名な開発手法に「DevOps」というものがあります。これは、Development(開発)とOperations(運用)を略した造語です。上記画像の様に、計画を立て、アプリを作り、デプロイし、運用し、さらによくするための計画を立てるという循環になっています。
このように、開発の流れの１つになるほどデプロイは重要なのです。

また、デプロイすることで自動的にその先の経験まで積むことができそうですね。デプロイしたアプリを管理したり、ユーザの声を聞くことでアプリをより良いものにしていく。アプリの改善点や新機能の要望、応援メッセージなど、やる気や成長につながることも多そうです。デプロイの作業自体も経験になりそうです。

これまたやり得ですね。私はめんどくさくて手をつけることができませんでしたが、皆さんはぜひデプロイしてみてください！！！


## ５．AWSの利用
AWS、もっと触っておけばよかった！！！

最近主流の[AWS](https://aws.amazon.com/jp/what-is-aws/)ですが、便利すぎます。大学４年生の後期にしてやっと触り始めました。AWSの様々な機能を組み合わせればなんでも実現できるのではないか？そう思うほど便利です。
私は就活時に、その企業がどの様なツールを使用して開発をするのかを毎回調べていたのですが、7か8割ほどの企業がAWSを使用していた気がします。

- 仮装サーバを超簡単に立てれるEC2
- WebAPIを超簡単に作れるAPI GatewayとLambda
- データベースサーバとして利用できるRDS。

ほんと便利なので、ぜひ使ってみてください！
最初に資格で勉強してみると言う人がいますが、AWSの資格はクラウド関連の知識を大量に叩き込まれて意味わからなくなるので、まずは開発で使用してみるのがおすすめです。


## まとめ
楽しい大学生活でしたが、やりたいことを多く残して終わってしまいました。
この記事を読んだ大学生の皆さんがやりたいことに挑戦して、満足のいく大学生活になれば嬉しいです。