selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

「ChatGPT/LangChainによるチャットシステム構築 」という書籍が素晴らしかったのでNode.jsでも書いてみた

はじめに 「ChatGPT/LangChainによるチャットシステム構築」 という本が素晴らしかったので、ちゃんと身につけるために Python だけじゃなくて Node.js でも動かしてみました。同じことをやろうとした人のために、ここにそのときの記録を残します。特に call…

腕前で生きてるとWHYよりもHOWに執着しがち

はじめに この投稿はポエムです。 技術的な記事を期待してる人はブラウザバックお願いします! なおこの文書は諸々の理由により、一部ぼかしたところがありますがご容赦ください。 TL;DR 有名になった方法論は、目的が忘れられて、手段だけ広がることがある …

OCR用のSaaSをアレコレ調査してみた

TL;DR ちょっとプライベートでOCRを使ってみたかった SaaS決定の判断基準は下記 精度、費用、開発のしやすさ ( ライブラリの品質、インフラ設定の工数など ) 選定対象のSaaSは次の通り Microsoft Form Recognizer、Cloud Vision、adobe extract API 選定基準…

【PO編】PO&SMをやめるので過去の学びをアレコレ書いてく

背景 2年間くらい PO & Scrum Master とソフトウェアエンジニアを兼務したり色々あった この度、ソフトウェアエンジニアに集中できることになった せっかくなので、忘れる前に ( もうたくさん忘れたけど ) 書き出すことにした この記事は、未来の自分が思い…

チームみんなが参加しやすくなるIaC設計の工夫

モチベーション 私は「インフラ」という言葉は、人によって受け取り方が大き違う言葉だと思ってます。 「よく分からないけど難しそうなので出来れば触りたくない」という人や、「ごく小数の人にしか触らせたくない」という人、 「IaaS、PaaSはインフラと認め…

新しい技術を検討する際、PdMとして事前に決めておくこと

この資料の目的 自分のキャリアを振り返ってみると、PdMとソフトウェアエンジニア業を兼務することが多くありました。PdMとして業務していくなかで、エンジニアへのお願いの仕方を間違えて、想定よりも多く時間が掛かってしまうこともありました。その問題は…

説明・説得コストについてアレコレ考えたこと

TL;DR 払うべき説明・説得コストと、払うべきでない説明・説得コストが存在する 払うべき説明・説得コストとは、その行為によって期待する成果 (積極的に) 払うべきでない、もしくは説明の方向性を逆転すべき説明・説得コストは、下記の通りだと考えている …

ドメイン乗っ取りを防ぐためにAWSで .com ドメインを使っている

TL;DR JPドメインの管理をしている株式会社日本レジストリサービスには、下記の規則がある ざっくり言うと、「誰かがあなたのドメインを欲しいと言って、あなたが10日以内に返事をしなければ、ほしいと言った人にあげちゃうよ」という規約である // https://…

AWSにおける踏み台(Bastion)サーバーの作り方

モチベーション Bastionサーバーは、会社のサーバーの入り口であり、アクセス管理は厳重に行う必要があります。Bastion(要塞)という名前の通り、各社強力なセキュリティの対策を行っていました。最も一般的なものだと、個人ごとにアカウントとSSHアクセス用…

TypeScriptのnode-fetchをテストの際にmockする

モチベーション TypeScript で node-fetch のライブラリを使ってテストするのに少し手間取った 他にもハマる人がいるかも知れないので、ここに記事として残しておく テストしたい内容 Soracom Arcを利用して unified endpointにテストデータを送信したい テ…

モブプログラミングの進め方

この文章の目的 システム開発における共通認識の作成、または共同学習を目的としてペア/モブプログラミングが有効とされています。 モブプロをより良いものにするためのプラクティスについて、モブプログラミング ベストプラクティスという書籍を元に説明し…

Terraform / aws-cdk を比較してみた(個人の所感です)

プライベートにて、経験の浅いチームから aws-cdk と terraformどちらが良いのですか?と聞かれたのでまとめてみました。間違いがあればご指摘いただければ幸いです。 前提 利用する人間はIaCの初心者である 当然 CloudFormation等に関する基本的な知識がな…

課題を整理・分類し、対処できるように解像度を高めていく

モチベーション 日々、未加工の生肉のような課題っぽいものが飛んでくる 課題っぽいものの中で、今の状態で実施すべき打ち手を把握したい 課題をうまく整理・仕分けし、上記を実施していきたい 課題の図 そもそも課題とは何でしょうか。本書は課題を理想と現…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ( 施策立案編 )

突然ですが最近転職しました。転職先は三菱重工業です。 業務内容については、概ねこちらの記事に書いてある感じです。 多くの人が意外に思うかも知れませんが、AWSをゴリゴリ使って毎日楽しくシステムを作ってます。 findy-code.io 製造業の世界に飛び込ん…

Azitで学んだことの棚卸し(たぶんずっとWIP)

2019年7月から参加したAzitを、2020年6月30日をもって退職することになりました。 AzitにはSREとして参加しましたが、開発プロセスを設計したり、開発物を考えたり、データを分析してみたり、 振り返ればSRE的な仕事はほとんどしておらず、色んなことに手を…

react-railsを利用したRailsアプリケーションにてCSRFの対策を行う

はじめに 最近久しぶりに Rails で Web アプリケーションを開発しました。その中で React でフォームを作ることになったため、CSRF に関する対策について調べました。そのとき調べた内容を記載します。 なお、React の利用は SPA などではなく、react-rails …

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第3回 ライフサイクルとOMTM~

前回の記事では「事業計画とのすり合わせ」のステップについて記載しました。 selmertsx.hatenablog.com 今回の記事も、引き続き「事業計画とのすり合わせ」のステップについて説明しています。 TL;DR 顧客のライフサイクルを書き出し、課題の解像度を上げま…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第2回 数値目標の認識合わせ~

先日書いたこちらの文章における、「事業計画とのすり合わせ」のプロセスについてのお話です。 selmertsx.hatenablog.com 一口にスクラムマスターと言っても、事業計画に関わる深さは人によって異なります。 会社の文化や、その他様々な要素によって変わるで…

アジャイルとリーン・スタートアップを組み合わせた開発プロセス ~第1回 概要~

2019年8月にAzitに入社して4ヶ月。 私はSREとしての役割を期待されてAzitに入社したけれども、気がつけばバックエンドエンジニア兼スクラムマスターをやっていました。 バックエンドエンジニアとしては、AWSインフラ環境の完全な作り直しとTerraformによるコ…

エンジニア面接において構造化面接を取り入れる際に色々考えたときのメモ

前提 このドキュメントは、Work Rulesと失敗の科学 、そして Google re:Workに記載されている面接方法をベースに書いています。上記の資料について、既に古い認識になっている。またはより良い知識がある場合は、このドキュメントは既に古いものになっている…

Azitに入社しました

TL;DR 2019年7月にSpeeeを退職し、Azitに入社しました Azitではインフラエンジニア・スクラムマスターをやってます Speee、とても良い会社なので色んな人に勧めたい Azit、とても良い会社だけど、死ぬほど人足りない Azitに転職しました 2019年7月にSpeeeを…

AWS System Manager Sessions Manager のPort Forwardingを利用して踏み台を経由せずに手元からitamaeを実行する

AWS System Manager Session Managerとか、ちょっと冗談みたいな名前ですよね。 おいおいEKS化とかやってく!! このドキュメントに書いてあること。 このドキュメントには、AWS System Manager Sessions Manager のPort Forwardingを利用して踏み台を経由せ…

SREについてDevOpsの違いや各種用語についてのまとめ

自分用メモです。 DevOpsとSREの違い DevOpsとは開発(Development)と運用(Operations)を組み合わせた言葉であり、開発担当者と運用担当者が連携して協力し、さらには両担当者の境目も曖昧にする開発手法を指します。 厳密な定義は存在しておらず、抽象的な概…

functions-framework を利用したGoogle Cloud Functionsにおいてpubsubのテストをする方法

このドキュメントに書いてあること これまで Google Cloud Functionsをローカル環境でテストするときは、cloud-functions-emulator という公式で提供されているツールが一般的に利用されていました。しかしながらこのツールは現在archiveされており、作者が2…

SAM Localを利用してLocalで動かしているAWS Lambda からdynamodb-localにアクセスする方法

この記事に書かれていること SAM CLIの環境構築方法 SAM CLIを使ってLocalでLambdaを起動する方法 SAM CLIを使ってLocalで起動しているLambdaから、Localで用意したDynamoDB containerにアクセスする方法 これらの処理を僕が趣味で作っているAWS Lambdaを例…

TypeScriptで書かれているCloud FunctionsからCloud PubSubのREST APIを叩く

この記事に書いてあること この記事には、 TypeScriptで書かれているCloud FunctionsからCloud PubSubのAPIを叩く方法 が書かれています。それだけのことなのですが、現在GCPから公式で提供されているライブラリで実現するにはとても大変でした。 僕が把握し…

Stackdriver Logging を利用して特定の条件に一致したLogの情報をSlackに通知する

最近、Cloud Functionsを利用してサーバレスでシステムを構築しています。けれども、まだまだサーバレスでシステムを作り慣れていないので、Cloud Functionsが正しく実行されたのか、ちょっと不安なので確認したいと考えていました。そこで、Cloud Functions…

「Serverlessで構築する社内ID基盤」というテーマで発表してきました

speakerdeck.com

SlackのBlock Kitをjsxの記法で書ける jsx-slackを試してみた

TL;DR 僕は個人的に datadog_slack_reporterというものを作成して、datadogで監視しているサービスの台数をslackに通知しています Slackのメッセージ作成部分を、SlackのBlock Kitをjsxの方式で記述できる jsx-slack に置き換えてみました 面倒なjsonの作成…

Sidekiqのjobの信頼性向上方法と Sidekiq Proの検討について

自分のための覚書 TL;DR sidekiq proでは、server processが死んでも jobの復活がサポートされる sidekiq proにおいて、redis が死んでも、1000件程度のジョブならclientが保持し続けて、redisが復活したタイミングでenqueue してくれる ↑の状況において、cl…