2020年の私的振り返り
Section: Diary

今後就活等で学生時代に何をしていましたかと聞かれてもいいように、記憶が鮮明な内に備忘録として2020年を振り返ります。

~1月

自分の欲

音楽に関わるもの(ハードウェアからソフトウェアまで)すべて、自分が満足するものでなければ気が済まないという欲求?があるので、まずは基盤となるOSを作ろうということになっていました。

ブートローダ

そのためはじめに、ブートローダを作成するために、RustでUEFIインターフェースのラッパーを書いていました。一応既にそのようなライブラリがあったのですが、OSを書く上で必要な知識なのであえてフルスクラッチでやってみました。しかしテキストのIOやパスの読み込み等ができたあたりでブートローダで使用したいUEFIのメソッドがFFIで動かず、ライブラリの方でも実装していなかったため、どうすることもできず断念しました。

その後ほかの方法も模索しましたが、OS作成で学生生活が終了しそうだったので、音楽の基盤の一つである音声フォーマットの作成をすることにしました。

1~3月

音声フォーマット1

去年の夏あたりに音声フォーマットの開発をしており完成したのですが、OSの勉強で自分のRust能力が少し上昇しリファクタリングしたかったので、ライブラリの開発をもう一度1から始めました。そしてフォーマットを読み書きできるようになり完成しました。まだ再生の部分やguiのソフトウェアの開発が残っており未踏に応募するため、仕様書や概要を書いたりしました。結果としては未踏はダメでした。

生協のPC関連バイト

大学の生協で新入生向けPC講座やサーバ管理などPC関連の内容をするバイトがあり、自分はサーバ管理の部分に興味があったのでやってみました。実際に入ってみるとPC講座がメインであり、サーバ管理は現在やっていない状態でした。しかし新人研修等がしっかりとあり、たくさん学ぶことがありました。

インターン

応募

春休みに向けてインターンに行くために、最初にネットで広島県内のIT関連の企業を調べてみました。しかし広島県内ではそのようなインターンはなく、関西付近を調べました。Laravelを使用してウェブサイトを作ったことが何度かあったため、Laravelを使用する企業の応募をしました。1週間くらい経っても連絡すらないので、ほかのインターンを探しました。(大学一年の自分には知識がなく知らなかったのですが、インターン行くときは就活と同じように何社か応募するのが主流らしい。個人的には、応募しておいて他のところに行くからやめますというのは失礼な気がするけど...。しようといえばしようがないのかな企業側も落とすし)

開始

2社目の応募、インターンというよりアルバイトの募集で、Flutterでアプリ開発をしている大阪の会社に行くことになりました。すぐに業務に入るというわけではなく、はじめ(大半)は過去のタスクをしたり、Flutterで模写アプリを作成していました。

初めて大規模プロジェクトのソースコードに触れたため、個人開発の時とは違いコードの場所や仕様をすべて把握していない状態で機能追加をしないといけなくて、コツをつかむまで大変でした。

模写アプリを作成では1つ目のアプリを作成した後に、Flutterのwidget間の値の受け渡しやset_stateでの値を更新がuiと処理のコードが分離されてない感じで見づらいと感じました。そのため2つ目のアプリではデザインパターンについて調べ、BLoCやproviderを用いて作成をしました。

結局実際の業務に参加したのは数日でした。春休みが終わってもリモートでする予定だったのですが、タスクの仕様の確認や準備は時間外で、コードを書いた時間しか時給が出ないため、ブラック感があったのでやめました。(ちなみに交通費などの方が給料を上回ってしまった...)

4~5月

LIFE

これから何をするか計画を立てて置きたいということで、ToDoの内容を5段階に分け、小さい目標から人生の目標を立てることができるサイトを作成しました。Laravel, Vue, Bootstrapを用いて開発しました。慣れないオンライン授業に対応しつつ空いている時間はこのサイト作成に時間を割きました。

5~8月

専門学校の講師

話を聞きに...

バイトの関係で専門学校の講師についての説明を聞きにいきました。自分は話を聞くだけのつもりだったのですが、ゲームの講師をしてくれないかと頼まれました。ゲーム系はあまりやってこなかったので、断るためにその旨と大学の時間割の話をしたが、本当に人手が足りなかったらしくタームによって時間割を変更したりしていただき、断りづらくなったので引き受けました。

やってみて

家庭教師やPCを教えるバイトはしたことがあったのですが、自分にとっては教授のような立場になるのでそれ以前のことよりさらに緊張しました。プログラミングをしたことがない生徒が多く、最初はどう進めようか迷っていたのですが、復習を何度も取り入れたり、生徒ごとにフォローしたりするなど試行錯誤していきました。結果として最後に皆がしっかり作品を完成させていたのでよかったです。

CRCとLDPC

音声フォーマットに誤り検出と誤り訂正の要素を取り入れる予定なので、論文や参考書を読みました。CRCはどの種類を使用するかとRustでライブラリの開発をしました。LDPCは音声フォーマットの最後に使用するため、優先順位が低く調べた段階で終了し、先に音声フォーマット自体の開発の続きをすることにしました。

生協のPC関連バイト

誰も予期していなかった事態により対面向けにしてきた新人研修とは違うオンラインの形で教えることになりました。本来であれば自分は講師のサポートをする立場であったのですが、一人でグループを請け負うことになり、オンラインで何をどう教えたらいいかわからないなかいろいろと試していきました。

広島でRustを

夏に向けてインターンをできたらいいなということで、大学の先輩から広島の企業を紹介していただき面接を受けました。一通り自分のやっていることなど話し、企業の方が「うちはインターンで自由にやらせているけど何がしたい」みたいなことをおっしゃられたので、RustとFlutterで開発をしたいといったところ、Rustはダメだったので断念しました。広島で初のRust採用企業にしたかったです。

8~10月

オンライン授業の影響でまだ春休み気分のまま夏休みに突入しました。

音声フォーマット2

前回はイマーシブサウンドをBubble fieldという離散型で実現していたのですが、今回は関数を使用した連続型で実現する方の開発をしました。ソフトウェア工学で習った開発スタイルやRustの熟練度が少し上がり、前回より少しいいコードが書けた気がします。最終的に再生するところまでできました。

10~12月

広島のITバイト

PCを教えるバイトの関係でSQLを使うバイトがあるという募集をしていたため、応募しました。どうやらSQLの仕事はなく、ExcelのVBAの仕事がメインだったのですが、広島のIT事情に興味を持ったため、働かせていただきました。最近では、Raspberry PiやArduinoを触ったり、Laravelでサイトを作成しています。

Rustのみのサイト

環境構築

Rustの速さ、安全性、使いやすさ、エラー時の納得度が個人的に一番良かったので、Rustをバックエンドからフロントエンドまで使いたいということで環境構築からはじめました。バックエンドにActix web、フロントエンドにYewを使用することにしました。他にはPostgresql, Tailwind CSS等を使用しています。webpackやdockerの内容をどうするかで結構悩み、すべて決まらないまま参加したアドベントカレンダーの時期に近づきました。

フロントエンド

そのため先にフロントエンドを完成させようということになりました。記事はMarkdownで書いて、クライアントでリアルタイムでHtml変換するような少し変わったサイトを作成しました。その後検索機能やSVGアニメーションなどいろいろな機能を追加していったのですが、問題なく作成できました。型がしっかりあってわかりやすく、Rustのとてもよい標準ライブラリを使用できるため、本当に開発しやすいです。

生協のPC関連バイト

このバイトも後期に入り、オンラインでどう受講生のモチベを保ちつつしっかりと教えられるかについて考えながら進めていきました。上手く進行でき、受講生が楽しくしっかりと講義内容を進められていた時はうれしかったです。またミーティングや部署などがあったりと今までのバイトと違い、組織として動くことができました。

またサーバ構築について、どのPCを購入するかから始まりました。来年にサーバ管理できるといいです。

終わりに

まず一月あたりの記憶がほぼなかったのでTwitterGitHubをみながら思い出して書きました。主にIT関連と指導について成長できました。今年は何もしていないなと思っていたのですが、多少はしてたので今年の評価としては65点くらいあると思います。来年はたくさんアウトプットしたいのでもっと頑張っていきたいです。

皆さんも一年間お疲れさまでした。