おふとんの中から

その辺に転がってるエンジニアの備忘録

丸山ダム

この記事はダム Advent Calendar 2019 14日目の記事です。

ゆいなです。

今年は去年よりもダムカード収集が加速しまして…
北は福島、南は鹿児島まで行き限定カードも含めて累計枚数は179枚となりました。

ちょっと行き過ぎた自覚はあるけど反省はしていない

今年のダム訪問数は100箇所を超えていますが、その中でも定期的に通っているとあるダムをご紹介します。

丸山ダム

f:id:yu1056y:20191214171622j:plain

ダム便覧

岐阜県加茂郡八百津町可児郡御嵩町との境、木曽川水系木曽川に存在するダム。

一番最初に訪れたのは2018年12月でした。

f:id:yu1056y:20191214171654j:plain

最近は雨の後に行くと大体放流してるダムというイメージがついてますw

私がこのダムに通い始めた理由は、新丸山ダムの存在を知ったこと。
近いところでダムの工事が進んでいることを知り、これは定期的に通って、工事で変わっていく状況を見ていきたいと思ったから。

まだまだ転流工の工事中のため、暫くは丸山ダムを見ることはできますが、転流工が使われだしたら今の丸山ダムが見れなくなると思うと少しさみしいですね・・・。

f:id:yu1056y:20191214171721j:plain

今年チャレンジしたこと

この記事は#しがないラジオ Advent Calendar 201913日目の記事です。

ゆいなです。

今年は環境も変わり、色々とチャレンジをしたタイミングだったなーと思います。

ということで、全体的に今年チャレンジしたことと、その振り返りをしていこうと思います。

今年のチャレンジ

転職した

一番大きいのは転職ですね。

1月から医療系ベンチャーに転職し、バックエンドエンジニアをしています。

今までとやることも違うしスピード感も違うので戸惑うことも多かった。
それでも、自分が今この会社にいる理由が明確になっているし、良いサービスを提供したいというモチベーションが今の私を動かしています。

大規模カンファレンスに行った

今年は勉強会だけではなく、カンファレンスにも行きました。

2月末のJAWS DAYSが一番初めでしたね。
私自身大きいカンファレンスに行くのが初めてでしたが、勉強会以上に刺激を貰えました。
そしてこの後に書くDB勉強会を開く勇気も貰った。

5月にはGo Conferenceに。
言語系のカンファレンスは初めてでしたし、英語のセッションも初めて。
なかなか大変でしたし、勉強が全然足りないなとエンジニアとしての弱さを実感する場所でもありました。

11月は PostgreSQL Conference。
今まで行きたくても行けなかった平日のカンファレンスに参加できたのは、今の会社のおかげでもあります。
私自身の今後目指す方向に一番近い場所でもあるので、学びがたくさんありました。
ここに行ったことでまた一つのきっかけを頂きましたし。

カンファレンスに行っただけではだめ。それをどう今後生かしていくかですね。

DBの勉強会を主催した

愛知にDBの勉強会が今までなく、あれば行きたいけれどやってくれる人もいない。
ならやればいいじゃないと背中を押してもらって初めて開催しました。

Podcastや以前の振り返りブログでも書きましたが、 私としては、以前の会社のようなあまり外部との関わりがなかった人にも来てほしい。
業務のどこかで関わりがあるDBを題材にすこしでも外との関わりを増やすため、背中を押す場所になりたいと思っています。
DBという大枠でテーマを絞らずに開いたのもそういう理由から。

愛知で今までDBの勉強会が無かったこともあり、次もやってほしいという声が大きかったです。
主催としてもとても嬉しいし、次回もやるぞ!という意欲が出ました。

丁度このAdventカレンダーの3日後には2回目も開催を予定しています。

ダムナイトを主催した

DB勉強会の主催をしたことで、なにか場を開くことにあまり抵抗が無くなりました。 趣味が高じてダムについて語り合う会まで開いてしまいました。

エンジニアの方もそうでない方も来ていただける。
一つのテーマで盛り上がれる。

やっぱり良いですね。

ダムナイトの2回目はまだ日程決めていませんが、絶対次回もやります。

Podcastに出演した

しがないラジオと成し遂げたいamに出演させていただきました。

podcastは音声な分、話すのがとても難しかった。
でも楽しかったです。

また他のPodcastにも出てみたい。

まとめ

来年も今年のチャレンジには負けない新しいチャレンジをしていきたいと思います。

今年の自炊を振り返る

この記事はmohikanz #cooking Advent Calendar 2019の8日目です。

ゆいなです。

何書こうかなーと悩んだので、とりあえず今年の自炊を振り返ってみることにします。

前提条件

20代
女性
一人暮らし

1月

f:id:yu1056y:20191207183852j:plain

割とお弁当作りも慣れてきました。

スクリューロックのジップロック、汁物も密閉できてまじで神。

f:id:yu1056y:20191207183846j:plain

普段の夕食はこんなもん。

cookdoの黒麻婆豆腐めっちゃ美味いんや・・・

2月

自炊記録の写真がなかった・・・
昼はだいたい買いに行ってた記憶ある。

3月

f:id:yu1056y:20191207183839j:plain

とある日の弁当。 確か冷蔵庫の中身の在庫処分やってて何もなかったから粗食になってる。

4月

f:id:yu1056y:20191207183834j:plain

とある日の夕飯の牡蠣のガリバタ丼。 あれやて、牡蠣が食べたくて仕方なかったんやて・・・。

5月

普通の飯テロ写真はあったが自炊写真が無い・・・

6月

f:id:yu1056y:20191207183828j:plain

そろそろ夏野菜の時期も近いということで、茄子の揚げ浸し。 獅子唐当たるのが嫌なのでピーマン揚げて獅子唐の代わり。

7月

f:id:yu1056y:20191207183823j:plain

たまには漬け丼とかも美味しい。 付け合せで大体茄子食ってる。

8月

f:id:yu1056y:20191207183817j:plain

弁当用と作りおきおかずを適当にワンプレートで盛ったらなんか上品に見えた。

9月

f:id:yu1056y:20191207183811j:plain

山形のだし。 家庭柄、山形の料理を実家でよく食べてたので、これも実家の味。

10月

f:id:yu1056y:20191207183741j:plain

そろそろお鍋も美味しい時期になってきたので去年の余りの鍋スープ使って。

f:id:yu1056y:20191207183800j:plain

ダムカレー的なものを作ろうとしたけれど、ちゃんと天端が作れませんでした謝罪。

f:id:yu1056y:20191207183745j:plain

黒豆の枝豆を産直で買ったので、久々に頑張って剥いた。

11月

f:id:yu1056y:20191207183751j:plain

山形の味を知っている私はもちろん芋煮も山形芋煮。

f:id:yu1056y:20191207183748j:plain

野菜だけ筑前煮カレー。
イメージは蕎麦屋のカレー。

12月

気が向いたら後ほど更新。

まとめ

一人暮らしにしては自炊頑張っている方なのかな?という周りを見た印象。 ただし、もうちょっと記録するように努力します・・・。

PostgreSQLのFDWを触ってみた

本記事は PostgreSQL Advent Calendar 2019 の2日目の記事です。

ゆいなです。

なんやかんやであまりpostgreSQLのことをあまり触ったことがないと気づいたので、
今回はpostgreSQLのFDWを触ってみようと思います。

FDWって何?

あるデータベースからその外部のデータへのアクセスを行うための仕組み

今回は色々と挫折してlocalhostでお試ししてます。
どうすれば良いのか分かる方は是非教えてほしい・・・

試してみた

環境:postgreSQL 11.2(もともと入れてたpostgreSQL)

前準備

データを作るのがめんどくさかったので、railstutorialをごにょごにょしてlocalhostにDBを作成。

ごにょごにょと言いつつ、やったことはdatabase.ymlを書き換えてlocalhostpostgreSQLに繋ぎ、migrationとseed流しただけです。

railstutorial=# \dt
                     List of relations
 Schema |         Name         | Type  |       Owner
--------+----------------------+-------+--------------------
 public | ar_internal_metadata | table | railstutorial_user
 public | microposts           | table | railstutorial_user
 public | relationships        | table | railstutorial_user
 public | schema_migrations    | table | railstutorial_user
 public | users                | table | railstutorial_user
(5 rows)

とりあえずこんな感じに。

FDW設定してみる

読み出す側のDBの作成

create database adventcalendar;

adventcalendarに、extensionからpostgre_fdwを入れる。

create extension postgre_fdw;

adventcalendarに、サーバーを作成。

CREATE SERVER railstutorial 
FOREIGN DATA WRAPPER postgres_fdw 
OPTIONS (dbname 'railstutorial', port '5432', host 'localhost');

作成したサーバーの接続方法を設定。

CREATE USER MAPPING for yuina
SERVER railstutorial 
OPTIONS (user 'railstutorial_user');

これのためにダッシュで作ったので、railstutorial_userのパスワードとか何も設定してないですごめんなさい。

サーバーの設定をしたら外部DBからスキーマをインポートしてくる。

IMPORT FOREIGN SCHEMA public
FROM SERVER railstutorial INTO public;

外部DBのpublicスキーマの内容を読み出すDBのpublicスキーマにインポートする形。

これが成功すると...

adventcalendar=# \d
                     List of relations
 Schema |         Name         |     Type      |   Owner
--------+----------------------+---------------+-----------
 public | ar_internal_metadata | foreign table | yuina_mac
 public | microposts           | foreign table | yuina_mac
 public | relationships        | foreign table | yuina_mac
 public | schema_migrations    | foreign table | yuina_mac
 public | users                | foreign table | yuina_mac
(5 rows)

外部テーブルとしてrailstutorialのテーブルが認識される。

adventcalendar=# select count(*) from users;
 count
-------
   100
(1 row)

外部テーブルと意識せずに読める!!

ということでlocalhost上でFDWできました。

試そうとしてうまくいかなかったやつ

最初は、railstutorialを上げているheroku postgresのpostgreSQLを外部DBとして使おうとしてました。

以下の通り設定。

CREATE SERVER railstutorial
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'hogehoge.compute-1.amazonaws.com', port '5432', dbname 'database');
CREATE USER MAPPING FOR yuina
SERVER railstutorial
OPTIONS (user 'hoge', password 'fuga');

これでインポートすればいけるやろーと思い、

IMPORT FOREIGN SCHEMA public
FROM SERVER railstutorial INTO public;

すると、

ERROR:  could not connect to server "railstutorial"
DETAIL:  could not send data to server: Software caused connection abort
could not send SSL negotiation packet: Software caused connection abort

heroku相手だし、sslmodeの設定いるのかなぁと思い、サーバーの作成し直し。

CREATE SERVER test_fdw
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'ec2-23-21-244-254.compute-1.amazonaws.com', port '5432', sslmode 'require', dbname 'd7dulj5k3bs1ks');

しかし変わらず…

ERROR:  could not connect to server "railstutorial"
DETAIL:  could not send data to server: Software caused connection abort
could not send SSL negotiation packet: Software caused connection abort

ダムの横でパソコン広げて試していて、次の場所行こうとしてたのもあって heroku postgresでやることを断念しました・・・。

sslmodeのデフォルトってpreferなはずなので特に何もせずにいけるはずなんですが・・・

転職して半年経ったのでまとめてみる

ゆいなです。

なんだかんだで転職して半年経ったので、ちょっとまとめてみようと思います。

今のお気持ちは?

「楽しい」の一言に尽きると思います。

勿論ながらやっていて辛い部分もあるけれど、総合的には楽しい。
一時期は1週間毎にやることが変わって、考えることが違うのが楽しいと感じていました。

どんなことやったの?

1月

  • 研修と称してRails Tutorialを1週間で完走
  • 社内用のslackbotを作る
  • 顧客管理システムの修正お手伝い
  • セキュリティチェックシート作成

会社に慣れることを中心に進めていました。
今までの仕事の進め方とは違うし、スピード感が全然違うのでギャップに苦しめられる・・・
これまでやってこなかった新しいことをどんどんやれて、ひたすら楽しかったという印象。

2月

  • 顧客管理システムお手伝い
  • 事業数値可視化のための準備

少しずつ会社に慣れ、今現在も一人で動いているプロダクトが少しずつスタート。
欲しいものをヒアリングし、自分があればいいんじゃないかと思うものを伝えてみると、色々と乖離が・・・
これまではシステムを中心にすべてを考えていたし、それで問題はなかったのだけれど。
ここでも今までやってきたこととのギャップに苦しめられていました。 それでも、1月から始めていた顧客管理システムの修正お手伝いで少しずつRuby on Railsに慣れてきてたのしー!って印象。

そういえばこの月はJAWS DAYSに参加してました。
イベントから、DBモチベが一気に上がった月。

3月

  • 事業数値可視化のための準備
  • LP管理システムの新機能作成

入社してからずっと開発からリリースの速度感に慣れず、どうしたら良いんだろうと悩んでました。
理由は、これまできっちり設計して問題なければやっと実装してテスト・リリースという動きが染み付いていて、
「不具合を出してはいけない」
「完璧な物を作って出さなくてはいけない」
という考えが一番にあったことが大きいかもしれません。

このタイミングで、LP管理システムの新機能作成を3日で形にして欲しいと依頼されたことが切り替わるきっかけになりました。
全部が全部きっちり設計してから作っていては間に合わない。
きっちりやるべきデータ設計には時間をかけ、それ以外の部分は手を動かして仮の状態でもイメージが見える形に実装していく。
画面を作るのがどうしても苦手なのですが、ディスカッションしつつ他のエンジニアに聞きながらも、
半日で見た目の部分をほぼ作りきったことで、最初から全部決めなくてもなんとかなるやと意識が変わったのを覚えています。
リリースこそ他のタスクの兼ね合いで遅れたものの、大枠の機能には3日で作りきれたのが自分もできるという自信に変わりました。

自信がついたことでDB周りの知識をベースとした他のエンジニアへの助言も増えてきた気がします。

4月

  • 事業数値可視化のための準備
  • 社内システム全般の修正
  • もろもろDB設計

Golangを書き始めて、たのしー!っていうイメージが強い。
やっぱりC言語を書いていた時期が一番長い分、Cに近いGolangが手に馴染む部分が大きいと思う。

プロダクトの方針を決めるためと、DB設計を色々とやりはじめたのもこの頃から。
RDBについては社内で負けない自負はありましたが、NoSQLが絡んでくるとどうしても難しい・・・。
RDB以外の知識不足を痛感するタイミングになりました。

RDB以外の知識不足という意味だと、社内システムの修正もその部分が大分ネックになりました。
主にフロントエンドの修正で大きく感じることに。
ロジック部分はなんとかなるし、htmlは組めるのだけれどCSSだけがどうしても・・・。
自分が苦手なのはどうしようもないので、CSSについてはフロントエンドエンジニアやデザイナーの方にお手伝いいただくように。

5月

  • 事業数値可視化のための準備

この月で事業数値可視化と称して進めてきた一人プロジェクトにも一区切り。
GoogleDatastudioを活用し、ダッシュボードを作成するところまで。 Golangも大分手に馴染んできたので結構楽しくやってました。

既存プロダクトの不具合がちょこちょこ増えてきて、不具合対応に時間をとられたり、社外対応が増えてコード書く時間がちょっと減ってしまったのは心残りですが、自分の社内での立ち位置が決まってきたなとも思うところ。

5月は個人的にも動きが多い月でした。
DB勉強会in愛知を主催してみたり、他のイベントでLTしたり。
外部へのアウトプットをここまで多くやったのは初めてでした。

そういえば5月は、Go Confarenceにも行きましたね。
会社の勉強会制度を利用し、普段は行きづらかった東京のイベントに行けたのはとても刺激になりました。
もっとgolangやってくぞ!とモチベも上がるのでとても良い・・・。

6月

  • 既存プロダクトリプレース

この月から、メインプロダクトのAPIサーバー改修をやることに。
node.jsを書いていくことになり、jsとNoSQLに苦しめられました・・・。
それでも、新しいことを知ることができたり、スキーマ設計をしていくことによりデータの取扱い方については自信が持ててきました。 これまで一人でやってきたけれど、複数人でのチーム開発をすることもここから。

良かった点としては、これまでメインプロダクトに関わってこなかったためにわからなかったことがわかるようになってきたこと。
これを機に、私がエンジニアとして進んでいきたい方針がほぼ定まったと思っています。

総括してみよう

年明けに転職し、一気に環境が変わったことでいろいろと大変だった部分はありますが、
これまではやれなかった部分ややったことがない部分についての経験を得たことで一回り成長できたかなと思っています。

7月に入り、小規模ではあるけれど新規プロダクトの開発でバックエンドを一人で担うことになり考えることも大分増えましたが、これも良い機会だと思い、色々な知識を身につけて少しずつでも成長していけたらなと思います。