アルパカログ

プログラミングとマネジメントがメインです。時々エモいのも書きます。

EctoでIDリストを指定して取得するときのメモ

久しぶりに書くといつも忘れるのでメモ。

ActiveRecord

users = User.find(user_ids)
users = User.where(id: user_ids).all

ActiveRecordでは上記のようにidsをそのまま渡すところ、Ectoだと次のように書く。

Ecto

users = User
  |> where([user], user.id in ^user_ids)
  |> MyRepo.all

【Rails5】link_toにdataとclassを同時に指定する

link_to ヘルパーはRuby on Railsの数ある便利なヘルパーのうちのひとつです。

link_to ヘルパーを使うとリンク先の指定がシンプルになるだけではありません。

POSTやDELETEなどのHTTPメソッドが指定でき、さらに data オプションを指定するだけで confirm を簡単に出せるのがとても便利なところです。

confirm を出したいケースとしてよくあるのが削除ボタンでしょう。そして削除は得てして危険な操作なので、目立つようボタンを赤くしたいというニーズがあると思います。

confirm を出しつつボタンのスタイルを変えるという、一見するとなんでもないところでハマったので、メモしておきます。

続きを読む

【初心者向け】図解でわかるGitのブランチとコミット

最近エンジニアでない人にGitを教える機会がありました。

意欲のある人に教えるのは楽しいもので、とりあえず動かせた方が学ぶのも楽しいだろうと必要最低限のコマンドだけ教えたんですね。

けれどもどうやら、全体像を把握しないままGitを使うのは難しそうです。

思えば私も、初めてGitを触ったとき何が何やらでわからなかったのを思い出しました。

そういうわけで、自戒を込めて、図を使ってできるだけわかりやすくGitのブランチとコミットについて説明したいと思います。

続きを読む

クラロワで学ぶ 新人エンジニアが手戻りのないPRを作る方法

学生の頃から開発経験はあるし、配属されて現場での開発も経験した。

なのに、PRがなかなかレビューしてもらえないしマージされない、なんなら設計に対する指摘が入って作り直し...なんてことありませんか?

4月に入社した新人エンジニアたちが、そろそろそんな悩みを抱えている頃かなぁと思います。

なぜPRが見てもらえなかったり、設計からやり直しになってしまうのでしょうか?

こういうところに気を付けると良いんじゃないでしょうか?というのを、クラロワのクエスト機能を題材に書いてみようと思います。

続きを読む

話せば伝わるという誤解 ミスの指摘と生存本能

黙っていても自分の仕事がすべて評価されるわけではない(中略)「話せば伝わる」のであれば十分良いと思うべきだ

自分が上司との1on1でよく話している内容」というエントリで感銘を受けた一文だ。

note.mu

この一文は、話しても伝わらないケースがあることを示唆している。ここで挙げられているのは、エンジニアとPMといったように職能が異なることから仕事の細部まで理解できないケースだが、話しても伝わらないケースは他にもある。筆者の書きぶりから、筆者はそれを理解していると想像できる。同じチーム、同じエンジニア(職能)のようなもっと近い関係でも伝わらないケースがあることを。

少し私の自己紹介をしておく。私はCREというエンジニアのグループをマネジメントしているEM(エンジニアリングマネージャー)…と言えば聞こえはいいが、本当のところはただのしがない中間管理職だ。自身もエンジニアとしてコードを書くが、コードを書くのと同じくらい、人と組織の振る舞いに関心がある。組織のアウトプットは人数の増加に比例しないというのは身をもって知ってきたし、それでもどうすれば今より良くできるかということを日々考えている。

今日はその中でも、私たちが頭ではわかっているのについ陥ってしまう「話せば伝わるという誤解」について書いてみたい。

続きを読む

EC2へのSSHをIAMユーザーに限定する

小規模開発において、EC2にSSHできるユーザーをIAMユーザーに限定したい(≒IAMで擬似的に管理したい)というニーズはよくあると思います。

開発者やサーバー台数が少ないケースでLDAPは管理コストがかかるし、LDAPの導入に時間を使うなら開発に使いたいというのがあるでしょう。

そこで、できるだけシンプルに実現するために次のような仕組みを構築します。

f:id:otoyo0122:20190615112501p:plain:w480

  1. 公開鍵をIAMに登録する
  2. 公開鍵の取得をEC2に許可するポリシーを作成する
  3. 公開鍵を取得するシェルスクリプトを作成する
  4. sshd configのAuthorizedKeysCommandにスクリプトを指定する

以下、それぞれの項目を説明します。セキュリティの考慮漏れがあるかもしれないので、使用は自己責任でお願いします。

続きを読む