Re:tewi_r Therapy

駆け出しWebエンジニアです

Windowsでの開発環境について

8月からエンジニアとして働いている(@tewi_r)です。
基本的にリモートワークで、自宅の4Kモニタに支給PC(Windows10 Home)を接続して業務を行っています。
初めてWindowsで開発を行うに当たり、導入したソフトウェアを書いていきます。

ユーティリティ系

Wox

www.wox.one

macOSAlfredライクなランチャー。
似たようなモノとしてHainもある。(開発が終了してる?)

Station

getstation.com

主要なWebアプリケーションを1カ所にまとめることが出来るアプリケーション。
少し前のアップデートで対応していないアプリケーションも自分で追加出来るようになりました。
現在は以下のアプリを管理してます。

Chrome拡張(後述)を使用したかったのでTrelloはChromeで見ています。

thilmera 7

www.thilmera.com

リソースモニタ。
4K表示にも対応していてくれて嬉しい。

ChangeKey & AutoHotKey

forest.watch.impress.co.jp

www.autohotkey.com

キーバインドMac風に変更する為に使用。
詳しい設定は後日書きます。

タスク管理系

Trello

trello.com

プロジェクト管理にTrelloを使い始めました。
次のアプリ/拡張を使用しています。

Pomello - Stay focused. Accomplish more.

Trelloにポモドーロタイマーを追加してくれるアプリケーション。

Elegantt : Awesome Gantt charts for Trello

Trelloにガントチャートを追加してくれるChorme拡張。

開発系

Git for Windows

gitforwindows.org

これがないと始まらない。
インストール時は改行コードを変更しないように設定すること。
(デフォルトだとLF -> CR+LFへの変更が行われる)

Vagrant ( + VirtualBox)

www.vagrantup.com www.virtualbox.org

Hyper-Vが使えないためVagrantを使用。
Ubuntu18.04をインストールし開発環境を構築しています。

構築時に色々詰まりました。

RLogin (ターミナル)

nanno.dip.jp
多機能で色々いじれるので使い勝手が良いです。
フォントの設定が分かりにくかった。

(参考:RLogin のフォント設定まとめ - 余白の書きなぐり

CmderConEmuといったコンソールエミュレータもあり、これはコマンドプロンプトPowerShellをタブ表示できるので便利なのですが、Powerlineフォントが正しく表示されなかったのでRLoginを使っています。

Visual Studio Code

code.visualstudio.com Ubuntuの開発環境にはRemote Developmentでアクセスしています。

Zeal

zealdocs.org

オフラインドキュメントアプリ。
macOSアプリのDashにインスパイアされたらしいですが、殆どDashそのまんまです。

A5:SQL Mk-2

a5m2.mmatsubara.com SQLクライアント。使いやすい。

WinSCP

forest.watch.impress.co.jp

FTPクラインアント

参考

おわりに

macOSと比べると、改行コードや日本語ユーザー名ファイル権限あたりが原因で良くトラブルが起きるのでしんどいです。

Windowsでの開発経験は殆どないので「こういうの便利だよ!」っていうのあれば教えて頂けると嬉しいです。

WindowsでのDocker環境の構築について

8月から受託開発企業で Web エンジニアとして働いています。
それに伴い開発環境がmacOSからWindowsになり、四苦八苦しながら開発をしています。

今回Dockerを導入するにあたって色々と詰まったので書きます。

環境

結論

Vagrant上のUbuntu 18.04にインストールしました。

試した方法

1. Docker Desktop for Windows (旧 Docker for Windows)

Get started with Docker for Windows | Docker Documentation

Hyper-Vが必要なため、Homeエディションでは使えませんでした。

  • System Requirements:
    • Windows 10 64bit: Pro, Enterprise or Education (Build 15063 or later).
    • Virtualization is enabled in BIOS. Typically, virtualization is enabled by default. This is different from having Hyper-V enabled. For more detail see Virtualization must be enabled in Troubleshooting.
    • CPU SLAT-capable feature.
    • At least 4GB of RAM.

引用元 : Install Docker Desktop for Windows | Docker Documentation

2. Docker Toolbox on Windows

Install Docker Toolbox on Windows | Docker Documentation

1の方法が使えない時に使う方法です。

dockerdocker-composeコマンドともに動作はしましたが、docker-compose up時にvolumesで指定したフォルダがマウントされない問題が発生しました。

結局原因は分からず、エラーも出ないため手詰まりでした。

3. WSLにDockerをインストールする

docker-composeが動きませんでした。

WSL2では動くそうです。
参考 : wsl2でdocker-composeの風を感じてみる - 無気力生活 (ノ ´ω`)ノ ~゜

Dockerインストール時には以下の点に注意しないと動きません。

4. Vagrant (Ubuntu 18.04)にインストールする

PCのユーザー名が日本語だったためインストールで手間取ったり、一度作成したVMが消滅しかけたりしましたが、現在は問題無く動いています。

vagrant up時に以前作ったVMが読み込まれない時の対処法(Windows) - Qiita

VSCodeのRemote Developmentを使って開発しています。

おわりに

Docker Desktop for Windowsを使いたかった。
WSLの登場でWindowsでの開発は楽になると思っていたので残念。
SSDをまっさらにしてArch Linuxを入れたい。

大手通信企業を退職し、web系受託企業へ転職します

2月に前職の大手通信企業を退職してから、およそ5ヶ月が経ちました。

長かった無職期間を終え、8月からweb系受託企業で働くことになりましたので、
転職活動の振り返りを書いていこうと思います。

概要

  • 勤務地は中部地区 or 関西地区
  • 前職ではSE(上流工程業務)を経験
  • いわゆる未経験からのweb系企業への転職
    • フロントエンド or バックエンド
    • 自社サービス/受託開発は問わない
  • 裁量大きく様々なスキルが身につけられる業務を希望

転職理由

  • コードを書くエンジニアとしてのキャリアにチャレンジしたかった
  • 技術が好きでIT業界を志望したが、前職ではどんどん技術から離れていってしまう
  • IT業界の人材不足がいつまでも続くとは思えず、早い段階で動かなければ一生このままだと思った

前職の不満点などは大きな理由ではないです。

大手特有のしがらみや古臭さは嫌いでしたが、その代わり福利厚生や手厚い研修などがあり、鈍重ながら会社を変えていこうという動きもあり、総合的には非常に良い企業だったと思います。

タイムライン

  • 11月:転職活動開始(エージェント登録)
  • 1月:応募開始
  • 2月:前職を退職
  • 3月:スキルの棚卸し、過去実績の整理など
  • 4月:Webアプリケーションの学習
  • 5月:ポートフォリオの作成 / 作り直し
  • 6月:応募開始
  • 7月:内定

スキル

  • 大学での研究活動(3年)
    • C++ / OpenGL / GLFW / PointCloudLibrary / Intel RealSense / Blender
    • 研究室でロボットのCG描画プログラムを開発
  • 前職(11ヶ月)
    • TCP/IPの基礎知識
    • ネットワーク構築の基礎知識
  • 独学(3ヶ月)

結果

フェーズ 件数
書類落ち/経験不足 8
応募後反応なし 5
面接落ち 4
選考辞退 2
内定 2
合計 21

都内と比べて圧倒的に求人が少ないため苦労しました。
いくつか気になる企業からもスカウトが来ていたのですがほとんど東京の企業でした。
最終的に内定を頂いた企業の内、条件や業務内容が合致する企業を選びました。

転職サービスについて

サービス名 件数
Wantedly 11
Paiza EN:TRY 2
転職エージェント 7
その他 3

Wantedly

「話を聞きに行きたい」ボタンを押すだけで簡単にエントリーをする事が出来ます。

ただし返信が無いことが殆どで、エントリーから返事が来るまで数週間掛かることもあり日程調整に苦労しました。

面談をして頂ける場合、事前に制作物やブログを事前に目を通して頂いていることが多く、ポートフォリオに対するフィードバックなども頂けたので非常に嬉しかったです。

Paiza EN:TRY

未経験からのエンジニア転職サイトです。

ランクに応じて応募できる案件が決まっており、応募できる場合そのまま面談までほぼ確定で進めるので楽です。

企業とのやりとりや日程調整などもやって頂けるので大変ありがたいです。

転職エージェント

大手とIT業界特化の二つのエージェントを利用していました。

大手エージェントはポートフォリオもなかった時期に、転職相談も兼ねて登録しました。

最初の面談で有名web企業の求人をいくつか持ってきて、「とにかく応募してみるのが大事です」と言われたので応募してみましたが、案の定全部書類で落ちました。
以降の求人はSIerばかりで、試しに一つだけ面接に行きましたが業務内容に魅力を感じなかったので辞退しました。

大手は案件自体は多いですが、殆どがSIerや派遣で、ノイズ(飲食店の店長候補等)が混じっている上、同じ企業が何回も出てくるので次第に見なくなりました。

もう一つのエージェントは私が未経験であったことと、サービスが持っている求人が殆ど都内であった合ったことから、数社しか紹介して頂けませんでした。また、サービスの質としては大手の方が良かったです。 メール返ってこないし。

ポートフォリオについて

ポートフォリオの作成はほぼ必須だと思いますが、ただ作るだけでは無くGitHubの使い方なども意識するようにした方が良いです。

ポートフォリオ自体の質もそうですが、コミットの粒度やプレフィックス、ブランチの切り方など、どれだけ実業務を意識して運用しているかという部分を見られます。
言語は使い慣れているものを使用すれば良いと思います。

また作成するにあたっての「思い」や「目的」があった方が、受けが良いですし作成のモチベーションも保ちやすいと思います。

履歴書 / 職務経歴書について

履歴書

履歴書は事実を書くだけなので特に考えることはないです。
私は履歴書メーカーを使用して作成しました。

職務経歴書

書類選考やその後の面接で重要になるのが職務経歴書です。

面接は職務経歴書Wantedlyのプロフィールを見ながら行われることが殆どでした。
私の場合職務経歴が殆どないため、自己PR欄にアルバイトやポートフォリオについて書けるだけ書きました。

Wantedlyのスキル欄に「Paiza Aランク」と書いておいたのですが、「Aランクあれば比較的すぐに業務についてこられるようになると思う」という評価も頂いたので書いておいて良かったと思います。

面接について

カジュアル面談ではメモをPCで取っていました。
前職ではメモは基本的に紙で取っていたのですが、PCの方が書きやすい上、成果物をその場で見せられるという利点もあるので途中でPCに切り替えました。
「PCでメモを取ってもよろしいでしょうか?」と聞いて、断られたことは無かったです。

「カジュアル面談」は企業によって捉え方が違い、会社説明とほぼ同義の場合もあれば、がっつり採用面接の体をなしているものもありました。

それに伴い選考フローもまちまちなので、早い段階で確認しておいた方がスケジュールを組みやすいです。

具体的には以下の様な選考フローがありました。

  • 「カジュアル面談」-> 内定
  • 「カジュアル面談」=「一次面談」 -> 「二次・三次面談」-> 内定
  • 「カジュアル面談」=「会社説明」 -> 「書類選考」->「一次面談」-> 「二次・三次面談」-> 内定

通常の採用面接では、もともとあがり症であったこともあり、うまく情報を伝え切れなかった部分が多かったような気がします。
ポートフォリオ作成も重要ですが、私の場合、面接対策に比重を置くべきだったかもしれません。

最後に

新卒で間違えたのでずいぶんと時間が掛かってしまいましたが、ようやくエンジニアとしてのキャリアをスタートすることが出来ます。

今回の転職活動では新卒時代の流れ作業とは違い、様々な社風や雇用形態があり面白かったです。いますぐ転職するつもりでない方も、視野を広げるために転職活動をしてみるのはありかもしれません。

求人数や勉強会の数などが圧倒的に違うため、可能であれば都内での就職を考えた方が良いです。

近況報告(6月)

近況報告です。
5月までは黙々とスキルアップや勉強をしていたのですが、今月はアクティブに動いています。

名古屋Ruby会議04に行きました

regional-gh.rubykaigi.org

6/8に大須演芸場で開催された、名古屋Ruby会議04に行ってきました。

こういったイベントに出席するのは初めてだったのですが、今まで書籍やTwitterでしか知らなかったエンジニアさんが目の前で話しているというのがとても新鮮でした 。

Laravelを勉強中なのにRuby?と思われるかもしれませんが、実はRubyは好きな言語で学生時代には趣味で良く書いていました。
勉強するフレームワークの選定時もRuby on Railsと迷いましたが、求人の多いPHPを書けるようになりたかった事と、人気が上昇傾向にあるという理由で現在はLaravelを学習しています。

企業の中でのRailsAWSの実際の使われ方を知ることが出来て勉強になりました。
Rubyの黒魔術の話などは、まだ理解が浅いので実際に活用するにはもっと勉強する必要があるなと感じています。

LaravelでCMSアプリを作成しました

http://laranale.herokuapp.com

github.com

LaravelでCMSアプリケーションを作成しました。
Qiitaの様な複数人によって投稿する知識共有サービスをイメージして作成しています。
ユーザー登録機能や記事投稿等の一通りの機能が備わっていますが、より面白いものに出来るように改良中です。

ポートフォリオサイトの作成

7ew1r.github.io

github.com

自身のポートフォリオサイトを作成しました。

以前にHTML+CSS+Bootstrap4で作成していたポートフォリオサイトはあったのですが、勉強して得た知識を活用してVue.jsで作り直しました。 CSSフレームワークにはBootstrapVueを使っています。
テンプレートを分けて開発出来るので、保守性が上がりました。
Vue.jsの機能を使って、ギミックなどを追加して面白くしたいです。

転職活動

ポートフォリオが一通り見せられる段階になったので、本格的に転職活動を再開しました。
先週は様々な企業を訪問させて頂いたのですが、それぞれの企業様によって制度や働き方・雰囲気がまったく異なるので、非常に面白いです。
どの企業様も私の制作物や経歴に目を通して、私個人への理解を深めようとして下さるのが嬉しいです。

おわりに

「良い記事を書こう」とすると、「情報が少ないのではないか」とか「もっと綺麗な文章で無ければ」という思いが出てきて、いつまで経っても書けないので、多少拙い内容でも週一くらいでは更新出来るようにしていきたいです。

今週は正念場になると思われるので、ポートフォリオの改良に注力します。

Laravelの学習を始めました

いままでバックエンドの学習として、CakePHPの学習をしていました。 最初の頃は環境構築で躓いたりと苦労しましたが、最終的にはVagrantを使って簡単に環境が構築できる段階まで行きました。

qiita.com

公式チュートリアルCMSの構築を終え、ログイン機能の実装など基礎的なCMSアプリケーションの動作についてはなんとなく分かったと思います。

GitHub - 7ew1r/CakePHP-tutorial: CakePHP-tutoral

しかしCakePHPの学習を進めていくと、あまり情報が出てこなかったり最近のトレンドも下降傾向にあるため、同じPHPフレームワークであるLaravelの学習に切り替えました。

環境構築については以下を記事を参考にしました。

qiita.com

次のコマンドでデータベース含め環境が整います。

docker-compose up -d nginx mysql phpmyadmin

本当に数分で構築出来るので非常に楽でした。

LaravelのバージョンはLTSである、5.5に変更しました。

composer create-project "laravel/laravel=5.5.*" firstapp

デフォルトだとMySQLバージョンは8.0が導入されるのですが、このバージョンはセキュリティが強化されているようで、手順通りではデータベースにアクセス出来ませんでした。

【Docker】MySQL8.0系を使う時に発生する問題について - websandbag ブログ

今回はチュートリアルとしてさくっとやりたかったので、バージョンを5.7に落としました。

LaradockのMySQLのバージョンを指定して再インストールする

  • コンテナを一旦全部止める
$ docker-compose stop
  • MySQLのコンテナを削除する
$ docker rm laradock_mysql_1
  • MySQLのイメージを削除する
$ docker rmi laradock_mysql
  • 「laradock/.env」を書き換える
 ### MYSQL #################################################
    
 # MYSQL_VERSION=latest
 MYSQL_VERSION=5.7
  • 再度立ち上げる
$ docker-compose up -d nginx mysql phpmyadmin

これで大丈夫かと思いきや、マイグレーション時にエラーが発生。

Laravel5.4以上、MySQL5.7.7未満 でusersテーブルのマイグレーションを実行すると Syntax error が発生する - Qiita

charsetの違いによるエラーらしいので、今回は使用するcharsetをutf8mb4 -> utf8に変更することで解決しました。

  • 「config/database.php」を編集
         'mysql' => [
            // 略
             // 'charset' => 'utf8mb4',
             // 'collation' => 'utf8mb4_unicode_ci',
             'charset' => 'utf8',
             'collation' => 'utf8_unicode_ci',
                // 略
         ],

参考 : Laravelの開発環境をLaradockを使って構築する方法 - タダケンのEnjoy Tech

チュートリアルとして以下のサイトを参考にさせて頂きました。

beiznotes.org

取りあえず一通り出来ました。

f:id:R_Tewi:20190522042217p:plain

機能はタスクの追加と削除だけです。(編集はまだ)

もう少しこのアプリケーションを弄って基礎的な動作を確認出来たら、オリジナルアプリケーションの作成に移ろうと思います。


やはり明確な目標があると学習意欲が違いますね。

学生時代にドットインストールのRuby on Railsチュートリアル等をやったりはしていましたが、写経しているだけでは全然身につかず、よく分からない状態で終わってしまいました。

現在は、一刻も早く人に見せられる成果物を作れる段階までスキルアップしたいという思いが強く、毎日新しい知識を習得出来ています。
(分からない事だらけで、詰まってしまうことも多いですが・・・)

明日からも頑張ろう

コーディングフォント「RictyDiminish with FiraCode」を使う

コーディングフォントとして、以前はRictyやSource Han Codeを使ったりしていましたが、VSCodeに移行してからはデフォルトのままで使っていました。

GitHubを漁っていたところ、FIraCodeというコーディングフォントを見つけました。

github.com

これはFont Ligature(合字)という、一部の文字がくっついて表示されることが特徴で、「>=」「===」 などの記号が見やすくなります。

hakatashiさんの作られた、RictyDiminishedと組み合わせたものを使っています。

github.com

フォントをインストールし、お使いのエディタで設定するだけです。

VSCodeで使うには、cmd + ,でSettingを開き以下を変更します。

  • editor.fontFamilyRicty Diminished Discord with Fira Codeを追加する
  • Editor: Font LigaturesTrueにする

#技術書典 6に行ってきました

f:id:R_Tewi:20190415113844j:plain

昨日(4/14)開催された技術書典 6に参加してきました。

即売会イベントに慣れていないこともあり長蛇の列に驚きましたが、想像より待ち時間も短くスムーズに入場できました。運営の方々お疲れ様です。ありがとうございました。

戦利品

  • 会場で購入
    • 技術季報 vol.6
    • チーム開発1年目の教科書
    • 非エンジニアのためのJavaScript
    • ワンストップ勉強会
    • ワンストップ転職
    • エンジニアの成長を応援する本
    • 矢澤にこ先輩といっしょに代数!
    • せつラボ 〜圏論の基本〜
    • 継続的にアウトプットする技術――エンジニアのための「続けられる」科学
    • 挫折論への招待
    • はじめる技術 つづける技術
    • フロントエンドごった盛本 PIVO丼
  • イベント後にBOOTHで購入
    • マンガでわかるDocker ①
    • マンガでわかるDocker ②
    • マンガでわかるDocker ③
    • エンジニアの心を整える技術
    • 個人開発がやりたくなる本
    • OSGirls
    • 理論と事例でわかる自己肯定感

アウトプットが苦手なので、そのためのメンタリズムや方法についての本が多いですね。

まとめ

技術書典には初参加だったのですが、来場者は殆どがエンジニアという空間は非常に新鮮でした。

本を買うだけであれば通販でも出来ますが、実際に足を運んでみると今までの知らなかった/意識していなかった分野の本がたくさんあり面白かったです。

また普段Podcastなどで聞いている方々に実際にお会いすることが出来て良かったです。次回も参加したいです。