桐生あんずです。
2017年12月からインターンとして働いていた会社で晴れて2018年2月にアルバイトになりお金をもらって働くようになったのですが、思ったこと、勉強したことみたいなのを振り返ってみようと思って書いてみたエントリです。
どんな会社で働いているのか
まずどんな会社で働いているのか紹介タイムに入らせていただきます。
一言で説明するのがちょっと難しいのですが、私がエンジニアとしてアルバイトをしている「株式会社坂ノ途中」は有機農業などの環境にやさしい農業に取り組む新規就農者さんや若手農家さんを応援し、環境負荷の小さい農業を広めることを目指す会社です。主なサービスとして自社のウェブサイトでお野菜の定期便サービスを運営したり、農家さんと買い手さん(スーパーやレストランなど)のマッチングやコミュニケーションを支援するWebサービス「farmO(ファーモ)」を運用しています。他にも、東京や京都で小売店を展開していたりも。
(京都の東寺のすぐそばにお店があります!)
ITをメインにしている会社ではなく流通な会社ですが、少量多品目の生鮮品の流通の現場ではITで解決するべき問題もたくさんあると感じています。私が所属しているITチームでは自社のECサービスの運用とfarmOの開発・運用がメインになっていて、私は主にfarmOの方に関わって主にバックエンドの機能追加や修正を行なっています。Rails周りをガリガリやっています。
オフィスには出荷を担当する方や経理や人事、営業をしている方など色んな方々がいらっしゃるのですがITチームの方も他のチームの方々もみんな優しい方々でリラックスした状態で仕事ができています。
そして野菜をたくさん使ったまかないを毎日食べています。すごく美味しいです。
実際にエンジニアとして働いてみて学んだこと
私のブログやTwiiterを以前から知っている方は既にご存知だと思いますが、去年の今頃はRailsを初めて触って間もないという状態でした。それからプログラミンスクールに行ったり自分のWebサービスを開発してみて、エンジニアのアルバイトをやってみたいと思い探していたところ、京都のインターネット界隈の繋がりのおかげで紹介してもらうことができました。
でも、やはり即戦力のエンジニアとしてはまだまだということでインターンとして簡単な機能修正や機能追加を行いつつ勉強したり教えてもらったりして、ある程度できるようになったらアルバイト採用という流れで1月の間出社させていただきました。そして、2月になって面談をしたのちに無事アルバイトとして採用されることになりました。エンジニアとしてお金をもらえるのは初めてのことで、決まったときはすごく嬉しかったです。
という経緯を説明したところで、どんなことを学んだかバンバン書いていくぞ!
1,チーム開発の感覚が分かるようになる
今まで個人開発では適当にGitコマンドを打ってコミット、リモートにプッシュをしていたわけですがそうはいかないのがチーム開発です。タスクごとにブランチを切って、コードを書き、コミットしてリモートにプッシュしコードレビューをしてもらいます。その中で「この書き方だとちょっとわかりにくいかも」、「もっとスマートに書けるんじゃないかな〜」などとアドバイスをもらえてすごく勉強になります。また、困った時にはチームメンバーにアドバイスや調べ方を教えていただけてありがたいです。また、こちらからも「このgemを使ってみたら良いと思います」「この設計やってみたいです」など提案して議論させてもらえてすごく楽しいです。
最近だと、開発に関わっている人たちを集めて開発しているサービスの機能を一から全部触るウォークスルーを企画してみんなで「この画面はどうなんだろう」「こんな機能あったら良いと思う」など議論できてすごく面白かったです。
個人開発の時は基本的に全部自分で考えて、ユーザーの声を聞きつつ機能修正をしていく流れでコードを書いていくことが多いですが、チーム開発の場合は様々な方と協力して議論しあってサービスを作り上げていく面白さがあり、やりがいがあると思います。
ちなみに、緊張感と慎重さを持ってGitコマンドを打つスキルがチーム開発には一番必要かもしれない…。
2,いろんな機能に触れることができる
インターンの最初期にはSEO対策(metaタグのdiscriptionの中身やTwitterCards)を個別ページごとにより適切にセットしようというコードを書きました。その中でも、どのように書いたら簡潔に書けるか考えたり、テストコードを書いてみたり、ちゃんと本番環境で反映されるかどうかチェックする必要があるなど様々な流れがあり、勉強になった記憶が残っています。
それ以外にも、ユーザのアクションを検知してSlack通知をつける機能やステージング環境と本番環境のfaviconのイメージを変えたり、ActionMailerのメソッドを新しく書くなど、個人開発では手が回らなかった部分にたくさん触ることができています。
最近だとSTI設計を作ってみる試みもさせていただいて、色々勉強になりました。(話すと長くなってしまいそうなので別記事でいつか書きたい)
また、バイト先で書かせてもらったコードを参考にして、個人開発のサービスの方にも機能を追加してみようという試みもできていてすごく良い循環になっています。
3,コードを綺麗に書く努力をするようになる
今までしていなかったのかよとなるんですが、大学4年までコードをまともに書いたことがなかったのでインデントのスペースなんて気にしないままコードを書いていることがかなりありました…。
今までは「動けば良いや」という気持ちで書いていた部分がかなりあったのですが、バイト先でコードを書くようになって「この記述もっと行数減らせるんじゃないのかな」とか「インデントのスペースの間隔が変で気持ち悪い」といったような感覚を得られるようになりました。よかった。
4,テストコード、デバッグのやり方を覚えてきた
今まで、個人開発の時はエラーが出たらエラー文をそのままググる→なんか色々試行錯誤して直すみたいなことばっかりで、テストコードもデバッグもRailsチュートリアル以外ではほぼやったことがなかったのですが、バイト先で機能追加や修正のタスクをやるたびに「じゃ、まずテストコード書いてみよう〜!」とメンター役の方から提案されるようになったことで、書くようになりました。最初はassert関連のメソッドやインテグレーションテストの書き方もよくわからず、メンターの方に聞いてばかりだったのですが、もともと書かれていたテストコードを眺めているうちに書く流れがわかってきて最近はサッと書けるようになってテストを回すようになってきました。
もし通らなかったときはbyebugを駆使してコンソールでパラメータにちゃんと値が入っているかチェックしたり、テストログをおいかけてどんなエラーが起きているか見る癖もじわじわとついてきました。
デバッグのやり方は最初分からないことばかりでしたが、慣れれば慣れるほど自分で手を動かせるようになれるので楽しいです。
5,技術書をちゃんと読むようになった
お仕事としてエンジニアをやらせてもらってすごく楽しいし勉強になる!…のですが、今までザ・文系の人間で大学では情報学を全く学んでいない人間です。他の情報系の大学生の人たちに比べたら本当にまだまだだと思います。
実際のところ、すいすいとコードを書いて機能設計できている自信は正直まだまだなくて、スキルはまだまだだと思います。それでもこうやって雇って仕事を任せていただけて本当にありがたい限りです。だからこそ、絶対に強くなりたいと思いコンピュータ科学の基礎的な技術書からRubyの教本やDB設計の教本をガンガン読むことを始めました。
一冊一冊説明すると長くなってしまうのでまとめますが、こんな感じの本たちを2ヶ月の間読みました。
「入門 コンピュータ科学」や「プロを目指す人のためのRuby入門」を読んだことで、プログラムの書き方が多少見えてくるようになったり、DB設計やサーバーの基本書を読んでみてどんな風にWebサービスが回っているかのイメージがどんどんと肉付いて見えるようになって良かったです。
「ハッカーと画家」や「ネットコミュニティの設計と力」も、ものづくりやWebサービス開発において大事なことがたくさん書かれていてすごく面白かったです。
今までネットの文献で知識を得ようとすることが多くて、今でも実際にコードを書く時はネットで調べるのは欠かせないのですが土台の知識があってちゃんとしたコードを書けることに繋がることがわかってきてもっと早く読むべきだったとなりました。アルゴリズムとデータ構造系の分野がまだまだ弱い気がするので積んでる本を早く読み終えたい。
まとめ
バイトになってまだ1ヶ月ちょっとですが、振り返って見ると学べたことがたくさんあってまだまだ学ぶことが沢山ありすぎるという感じです。仕事がうまくできなくて悔しいと思うこともよくありますが、やっぱり情報学やWebサービスの勉強はやってて楽しいし、コードが書けるとすごく嬉しいです。
なんでこんなに楽しいと思うんだろうという理由の一つとして、最近読んだ「ネットコミュニティの設計と力」を読んでふと気付いたですが、今までラーメン研究会や京都大学サークルクラッシュ同好会のような様々な大学サークルのコミュニティを渡り歩いた経験から、自然と「コミュニティ」を育てたり関わることが好きになってきていて、それと同じ感覚でWebサービスをといった一つの「コミュニティ」を生成し発展させることに楽しさを覚えているんじゃないかなあということです。
バイト先では主に「農家さん」といった私が普段観測しているインターネットのメインユーザー層からは少し外れておりどう展開していくかまだ考えているところですが、その中でユーザーに便利かつ楽しんでもらえる機能を考えて実装していくことで、独特なインターネットコミュニティが形成できたらすごく面白そうだしやってみたいのが今後の目標です。そんなイメージをしつつも技術書読んでコードをガンガン書いていくぞ〜。
そんな感じの近況でした。
宣伝タイム
株式会社坂ノ途中では、Webショップで野菜の定期便の販売を行っています!
多様なお野菜セットが販売されております。お米やお茶、コーヒーも購入できちゃいます。どの野菜も甘みと栄養が詰まっているものばかりで大変美味しいものばかりです。
気になる方、まずはお試しセットからいかがでしょうか!!!