はじめに
こんにちは。
この記事は、私が卒業研究で初めてGo言語に触れてみた感想をつづっていきます。
卒業研究について
私の学校で卒業年度になると丸1年かけて、行われる授業です。
数人のグループに分かれ、それぞれの課題意識や目的をもってシステム制作や研究を行います。
私の班では就職などで提出する「公欠届」という書類をデジタルで簡単に提出できるようなWebサービスを開発しました。
自分は主にバックエンドのGoのAPI実装をしました。
自分のレベル
まず、Go言語は全く触れたことがありませんでした。
バックエンド言語でも、授業で半年触れたPHPくらいしかまともに使えるものがない状況でした。
知識についてもAPIから何?という状態でした。
使用環境
フロントエンド
- Vue.js
バックエンド
- Go言語
- Gin
- gorm
苦労した点
エラーハンドリング
一番苦労していまだに理解しきれていないと感じるのが、エラーハンドリングです。
自分が思っている例外を列挙してみても、実はまだ例外があるよと指摘されることが多くありました。
Goではtry-catchが使えないのもあって記法に慣れるまでは苦労しました。
日付データの扱い方
実装したAPIでは、データベースに接続して、その中にある日付のデータを登録するといったことがありました。
引数をそのまま登録しようとするとなぜかうまく登録できませんでした。
これは扱う型の問題でしたが、その過程で様々な記事を読み、学習を深めるという点でよかったです。
値の更新
データベースの値を更新するAPIを作っているときに、一部の値が更新されないといったことがありました。
正直、ここが一番苦労しました。
結論からいくと、データベースとのやり取りに使ったgormがどうやら、0の値で更新するときにそれが無視されるということが原因でした。
0で更新するときは、更新する部分の構造体をポインタ参照にして、変数をポインタで参照してあげる必要がありました。
学んでよかった点
卒業研究では様々な苦難がありましたが、反面今振り返るとよかったと思うことも多々ありました。
それらをいくつか簡単に説明します。
使える言語が増えた
まず、単純に使用できる言語が増えました。
それでコーディングができるかといわれれば、まだ完全にYESといえる状態ではないですが、少なくとも少しは進歩できたと思います。
他言語でも使ってみたい表現ができた
今回はGo言語を中心にやっていましたが、その中でほかの言語ではやったことのない処理を数多くやりました。
ルーティングであったり、JSONで値をやり取りするAPIだったり...
ほかの言語でもできるのか/どうやって書くのかという興味がわいてきました。
まだまだ学びがある
自分の中では結構頑張ったと思っているのですが、実際は氷山の一角だと思っています。
特に、友人から最近聞いたミドルウェアの有用性についてはとても勉強になりました。
実際にミドルウェアの記事を見ているときは、楽しく、とても充実していました。
終わりに
卒業研究が終わると、いよいよ卒業→就職になるので、今まで以上に勉強する時間というのが確保できないかもしれません。
ですが、どうにか時間を取って社会人でも勉強することを忘れないようにしていきたいと思っています。
筆足らずですが、最後までご覧いただきありがとうございます。