はのちゃ爆発

はのちゃが技術ネタとか日常のこととかを書いてます。

社会人になって1年経ったので何を学んだのか振り返ってみる 技術的な話

最初は時系列に沿って入社から丁寧に振り返ろうとしてました。が、手間と記事の長さに反して面白くならないのでやめました。

なので、社会人になってから学んだことを列挙しつつ、何をやった結果そうなったのか書いてみる方式にしてみました。 私は今株式会社フィードフォースでバックエンドエンジニアをやっています。

会社でやった研修とかの話は、へーしゃ技術ブログの記事とか、へーしゃ人事のブログでいろいろ書いてあるのでそちらをぜひ。

nabeharu.hatenablog.com

nabeharu.hatenablog.com

tech.feedforce.jp

tech.feedforce.jp

書いてたらだいぶ長くなってしまったので、一旦技術的な学びだけでざっくりまとめました。 その他の学びと総括は次の記事で書きます。

目次

バックエンド

Ruby

社会人になるまでほぼ未経験。

入社前課題で「やさしいRuby」を読み、入社後の確認100問テストで新卒内唯一の満点を取ったりしました。

業務ではRailsでアプリ開発をしているので、今も日々勉強中。 最近はメタプロRubyを読んだりしました。Ruby Kaigi 行きたいです。

Rails

Rubyが未経験なので当然こちらも入社まで未経験。

入社してからの技術研修で「パーフェクト Ruby on Rails」を使って勉強。 その後、実際のプロダクトの開発でずっと使い続けている。

最近は “Trailblazer” を使った開発をしていたりもしている。便利なこともあるけど、別の gem と組み合わせるとめんどくさくなることがたまに…

個人的な趣味で使ったり、もうじき始まりそうな副業?的なやつでも使っていくつもりでいる。

View は Slim で書くのが好きです

TDD

入社するまで「テスト?なにそれおいしいの?」というレベルだった。 そもそもテストって何をするものなのかが全然ピンとこない、調べてもあんまりわかりやすい記事がない、という感じ。

上記のRailsを学ぶ研修でパRailsを使ったが、作るものはパRails通り、やり方はTDDで、というような研修だったので、 それを通じてTDDの基礎を学んだ感じ。

技術研修始まってすぐぐらいに「Everyday Rails - RSpecによるRailsテスト入門」を買ってペラペラめくったりしていたが、 最終的に一番役に立ったのはやはりプロダクトで書かれているテストコードを読むことだった気がする。

あ、使ってるのは RSpec です。 研修ではE2Eテストも書いてたけど、実際書くことはあんまりないな…

インターン生の感想で「こんなにきっちりテスト書いて開発してる会社初めてです」って言われて「あ、そうなんだ…」と思ってしまった。

インフラ

AWS

AWSは今まで使ったことがなかった。使ってもConohaとか、あとなんだっけ… github の Student Pack 的なのについてくる… Degital Ocean か、あれぐらい。

弊社のプロダクトは基本的にAWSで運用しているので、バックエンドエンジニアといえどもある程度の基礎は知っておかないと。

とはいえ今のところ使えるのは EC2, S3, SES, Lambda ぐらいで、ほかのサービスは殆ど分かってない… 最近「Amazon Web Services実践入門」を買ったのでぼちぼち読み進めて行きたいお気持ち。

上の本を買った後に、「Amazon Web Services 基礎からのネットワーク&サーバー構築」(紫本)の改訂版が出ると知った時の悲しみといったら…いいんですけど…

heroku

就活中に参加したインターンハッカソン)で使ったのが初めてだった。 そのころはあんまりどういうものか分かってなかったが、最近使用頻度がめっちゃ上がってるサービス。

プロダクトでも使ってたりする。個人的に作ったRailsアプリ、Sinatraアプリを手軽に動かせるのが素晴らしい。 無料で Rails + postgres + redis + sidekiq + スケジューラ 構成のアプリを動かせるのすごくないです?

とはいえインフラの勉強はしたいので、あまり heroku 依存はしたくないなぁ、という。

Chef

入社前はこの手のツールを知らなかったのもあり、昔ながらの温もり溢れる手作業でサーバを構築してました。

研修で特にやったわけではないですが、プロダクトで使ったり、個人的に使ってみたりで少しずつ扱えるようになってきました。

が、扱いが若干めんどくさいので最近は下の Itamae を使うことのほうが多かったり。

Itamae

Chefを使い始めて少ししてから知ったツール。

Chefを先にやっていたおかげで、レシピ(でいいのかな)の書き方や扱い方で困ることはほぼ無かった印象。 一方でリソースの種類がだいぶ限られているので、そこの書き換えで多少悩んだりはした。

最近は MItamae を Linuxの開発環境構築とかにも使っている。便利。

フロントエンド

最近のフロントエンド動向を追いかけてみる

弊社は新しい技術も臆すること無く試し、良いものであれば積極的にプロダクトに採用するという文化がある、と感じています。

フロントエンドも例外ではなく…むしろかなり先端を走っているのではないかと思っています。 それ故、バックエンドメインの私のようなエンジニアには全く理解できない世界が広がってたりします。

私個人の目標というか、目指しているエンジニア像は「自分一人で一通りの開発作業を完結させられるエンジニア」、有り体に言ってしまえばフルスタックなので、 昨今の変化の激しいフロントエンド界隈の技術も追いかけねば…という思いがあります。

社内で使われている技術スタックを追いかければ最先端のフロントエンド界隈の動向を知れる、というのは恵まれてます!

そんな弊社フロントエンドエンジニア陣のインタビュー記事はこちらからどうぞ。

www.wantedly.com

その他の技術

Webの基礎

意外とWebの基礎的な話って知らないもので。 これは研修で「Webを支える技術」という本を読みながら学習した内容でした。

Webの歴史に始まり、URLの話、「クールな」URLとは何か、REST、HTTPの仕組みやヘッダ、ステータスコードの話、RFCの話、などなど…

単純に「Webアプリを作る」というだけであれば知らなくてもどうにかなってしまう知識ですが、 より良い、「正しい」Webアプリを作るのであれば知っておくべき知識を知ることが出来たのは非常に大きかったです。

Facebook広告

仕事柄、Facebook広告関係の知識が身につきました。

Facebook上での広告の仕組み、出稿の仕方、料金などの広告基礎知識に始まり、 技術者的なところだと、広告に限らず Facebook API の扱い方を学びました。

その過程でOAuthの仕組みだったり、認証と認可の違いだったり、トークンの扱いだったり、 Facebook広告に限らずWebアプリを開発する上で知っておくと役立つ知識も身につきました。

Facebookに広告を出したい方は是非ご相談ください(?)

Mac

入社するまでMacというものをまともに使ったことがなく、入社してすぐはMacに慣れることから始まりました。 ちなみに他のエンジニア同期は普通に普段からMacを使っていたようで、Windowsユーザは私だけでした。

あまりまだ使いこなせている感じはないので、これからも日々精進ですが…

Linux

Ruby, Rails 開発をし始めてから、個人的な開発でも Ruby, Rails を使うことが増えました。

が、前述の通り私はWindowsマシンしか持っておらず、しかも Windows マシン上でのRuby開発は割と苦行です。問題はいろいろあるのですが。

なので、最初のうちは Windows 上で Linux 仮想マシンを立ち上げ、そこで開発を行っていました。 しかしそれも割と早い段階で限界になり、今は Linux MintWindowsデュアルブート環境を構築して日々の作業を行っています。

なんで素直に Mac マシンを買わないのかというと理由は簡単で、入社とほぼ同時に VAIO Z を買ってしまったからです。つらい。 VAIO Z 自体はいいマシンなんですけどね…Linux入れて使ってから輝きはじめた(気がする)ので、しばらくはこれで頑張ります。

Vim

入社してから初めてまともに Vim を使い始めました。 一緒にペアプロをしていた先輩社員が Vimmer だった影響。

影響もありつつ、ある程度 Vim を扱えるようになっておくと便利なことが多いだろう、という思いはちゃんとあります。 Linuxサーバ上での作業だったり、 Vim が使えると便利な場面は割とありそうですし。

実際に使ってみて、慣れてくるとどんどん快適に感じるようになってきてしまい、 今では後述する VS Code を使用していても Vim プラグインを入れて Vim 風操作ができるようにして使っているような状態。

でもまだまだ Vim 力は足りないので、これからも引き続き使って Vim 力を高めていきたいところです。

VS Code

しばらく Vim で頑張っていたものの、なんだかんだリッチなUIを持ったテキストエディタは便利なことに気づいてしまった今日このごろ。

私は割と環境のカスタマイズなどに時間はあまり割かず、こだわりもそんなに強くない人間です。 標準的な環境に自分を最適化すれば、がどこでも、どんな時でも一定のパフォーマンスを出せるから、という思いがあったり。

VS Code はそういう意味でもなかなか自分に合っているエディタで、 インストール直後からでもそこそこ使い勝手がよく、少しのプラグイン導入でかなり快適な状態に仕上がってくれるのがいいところです。

お次は

技術的な話以外の学びとかを書きます。 どちらかというとそっちのほうがメインかもしれない?