ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

就職しました

完全に書くの忘れてて学校の後輩に「まだニートなんですか?」みたいに聞かれたので書いておく

退職エントリー書いてから早くも7ヶ月、お気づきの方もいらっしゃるかと思いますが就職しました

いつ就職したの

3月1日に初出社してました

ちなみに出社初日の様子です

どこで何してるの?

大阪本町某所のスタートアップでWebエンジニアをすることになりました

会社としては採用コンサルで「エンジニアが足りない、もっとエンジニア欲しい…」というお客様を新卒採用をメインに採用のノウハウを提供して、採用のお手伝いする会社ですが、会社の制度設計を行ったり、自社サービスの開発や受託案件をやってる会社です。

自分がいるエンジニアチームは人数が少ないので基本的に必要になったら全部見て、技術選定も自分たちでするという楽しい職場で働いていて、就活の経験から採用コンサル等を行っているチームが採用に関して関西トップレベルだと思ってる*1ので、知らない事などを知れてとても楽しいです。

今後

自社だったり、受託だったりをこなしながら、やっぱりチームに関心があるので前職だと発言権がなかった”どうやったらいい組織が作れるのか”みたいな分野をもっと考えていきたいと思っている。

あとは割とあれな新卒研修を見て、これくらいだったらうちで研修業とかできるんじゃないの?とか思ったのでやってみたさが出てきてる。

cm

最後に「うち採用うまく行ってないんですよ」という企業様がいらっしゃいましたらTwitterのDMか何かで連絡を頂ければ、解決をお手伝いできるかもしれませんのでよろしくお願いします

*1:関西でしか就活してない

parcelで動的にファイルを読み込む

yuzu441.hateblo.jp

parcelでReactのアプリケーション書いてて、画像を動的に取得したい時にやり方が分からず困ったのでメモ

やりたかったこと

jsonか何かにデータを定義しておいて、そこから画面を組み立てたかった。

課題

静的な画像であればhtml内に含まれているimgタグのsrcプロパティを見て、そのパスにある画像をdistディレクトリ内にコピーしてくれる。

ただReactで動的に読み込むと当然imgsrcはparcelのビルド時点では解決できないので表示できない

解決方法

parcelではassetsの読み込みをimportを書けばいい感じににやってくれる。

ここのポイントはimportで画像を読み込むとファイル名がキーになっているオブジェクトが返ってくる

// importで返ってくるオブジェクト
{
  hoge: 'hoge.hash.jpg'
}

そのためimages[fileName]のようにアクセスすると画像のパスが返ってくるので、それをimgタグのsrcプロパティに書いてやればいい

以下に動かした例

import * as React from 'react'
import ReactDOM from 'react-dom'

// img/hoge.jpgがあるとする
import images from './img/*.jpg'

const MyImg = () => <img src={images['hoge']}></img>

ReactDOM.render(<MyImg />, document.getElementById('app'))

参考

github.com

go modules環境でgolang-migrate/migrateを動かす

goを始めたのはいいがmodules周りがよくわからず、migrationしたいだけなのに手間取ったのでメモ

github.com

tl;dr

  • cliをインストール
  • migration用のファイルを書く
  • mysqlの起動
  • mysqlに対してmigrate実行

cliのインストール

そもそもmigrateはcliで実行することもできるし、プログラムを書いて実行することもできるみたい

可能な限りコードは書きたく無い精神で今回はcliを試していきます

インストール

macであれば以下のコマンドでインストールできます

brew install golang-migrate

開発環境はmacですが一応環境に縛られない方法でためそうと思いgo getで取得する方法でチャレンジします

go mod init
go get -tags 'mysql' -u github.com/golang-migrate/migrate/cmd/migrate

もっと詳しく知りたい方は以下のURLを参照ください

github.com

migration用のファイルを書く

今回はmigrateディレクトリを作成し、その中にmigration用のファイルを作成していきます

migrate公式が書いているベストプラクティスを見ると以下の方式でソートできるようにバージョンをつけるといいみたいです*1

{version}_{title}.up.{extension}
{version}_{title}.down.{extension}

イメージとしては{version}に連番を振るかtimestampを使うのが推奨されてるようです

1_initialize_schema.down.sql
1_initialize_schema.up.sql
2_add_table.down.sql
2_add_table.up.sql
...

# or

1500360784_initialize_schema.down.sql
1500360784_initialize_schema.up.sql
1500445949_add_table.down.sql
1500445949_add_table.up.sql
...

今回は連番で書くことにします

upの処理を書く

migrateディレクトリ内に1_initialize_schema.up.sqlを作成し、以下のようにtableを作成するSQLを記述します

create table nogizaka (
    id integer auto_increment primary key,
    name varchar(40),
    height integer
)

downの処理

migrateディレクトリ内に1_initialize_schema.down.sqlを作成し、upの時に作ったものを打ち消す処理を記述します

drop table nogizaka

もしalter tableしたのなら、そのalter tableを打ち消すalter table書くみたいな感じですね

mysqlの起動

dockerを使用して、mysqlを起動します

Docker Hub

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=asuka -e MYSQL_DATABASE=sakamichi -d -p 3306:3306 mysql:8.0

mysqlに対してmigrate実行

database/mysql/README.mdmysqlに接続する際のサンプルが書いてますので、これを参考に実行してみます

github.com

migrate -source file://migrate/ -database 'mysql://root:asuka@tcp(127.0.0.1:3306)/sakamichi' up 1

これでmysql workbenchやmycliなどを使用してmysqlにアクセスするとsakamichiデータベースにnogizakaテーブルが作成されています

mycli -u root -h 127.0.0.1 sakamichi #password: asuka

次にdownを試してみます

migrate -source file://migrate/ -database 'mysql://root:asuka@tcp(127.0.0.1:3306)/sakamichi' down 1

実行後再度mysqlでテーブルの一覧を確認するとsakamichiテーブルがdropされています

まとめ

最初はmigrateのcliのインストール方法がよくわからずつまずきましたが、結果的にはgo modulesはあんまり関係なかったです。すいません。。

今回使用したコードは以下のリポジトリに入れてありますのでよければ

github.com