ブックマーク / zenn.dev (3,069)

  • LangChain で社内チャットボット作ってみた

    こんにちは、クラウドエース SRE ディビジョン所属の茜です。 今回は、現在最も普及している対話型 AI サービスである ChatGPT で使用されているモデルと、LLM を使ったアプリケーション開発に特化したライブラリである LangChain を用いて社内向けのチャットボットを作成します。 ターゲット 任意のデータを元に回答を行うチャットボットを作成したい方 任意のデータを元に回答させる仕組みを知りたい方 ChatGPT とは ChatGPT とは、ユーザーが入力した質問に対して、まるで人間のように自然な対話形式でAIが答えるチャットサービスです。2022 年 11 月に公開されて以来、回答精度の高さが話題となり、利用者が急増しています。 人工知能の研究開発機関「OpenAI」により開発されました。 執筆時点では、GPT-3.5、GPT-4 という大規模言語モデル (LLM) が使用さ

    LangChain で社内チャットボット作ってみた
  • フロントエンドの移り変わりは早すぎるのか

    インターネットでは毎日のように言われることですが、私はそこまでではないと考えています。 ネットでよくそう言われる理由として考えられるものと、それを踏まえてどう向き合っていくとよさそうか、個人的な考えをまとめてみます。 なぜ言われるのか 言語が実質的にJavaScript一択 バックエンド、というかサーバサイドでは技術選定に「言語の選択」が入りますが、フロントエンドでは実質的にはJavaScriptにほぼ固定されます(TypeScriptも別言語ではないので、ここではJavaScriptに含めます) サーバサイドと比較して「技術の移り変わりが早すぎる」と評される場合、多くはその人の使用しているとある言語と比較されているように思われます。 実質的に言語が固定なので、比較するならすべてのサーバサイドの変化の総量と比較するのが妥当でしょう。 PHP + Python + Ruby + go + J

    フロントエンドの移り変わりは早すぎるのか
  • Re: WebサーバーアーキテクチャとPHP実行方式の理解から始めるphp-fpmとはなにか?

    この記事のモチベーション 「php-fpmとはなにか?」を知るため、PHPのドキュメントを見ました。 しかし、ここに書いていることはまあそうなのですがあまりに焦点が絞られ過ぎてて「php-fpmとはなにか?」に対する答えとしては少し不十分な気がしていました。 例えるなら数学の問題に答えるにあたって、途中式を飛ばしたり証明の過程を飛ばしたりというような感じ。 不十分というのは、それを理解するための段階をすっ飛ばして答えだけが書かれている状態のことを指しています。 その不十分なところを自分も曖昧にしか理解できていない気がしており、いい機会なので整理しておこうというのがこの記事のモチベーションです。 そのためこの記事は、「php-fpmとはなにか?」をプロセス→Webサーバー→実行方式と順を追って説明していく構成になっています。 「細けぇこたぁいいんだ、おらぁ今すぐ答えだけ知りてぇンダ」という方

    Re: WebサーバーアーキテクチャとPHP実行方式の理解から始めるphp-fpmとはなにか?
  • 次世代データ基盤:データレイクハウスを Google Cloud で実現する

    はじめに こんにちは、クラウドエース データソリューション部の松です。 普段はデータ基盤や MLOps の構築をしたり、Google Cloud 認定トレーナーとしてトレーニングを提供しております。また、昨年は Google Cloud Partner Top Engineer 2024 に選出されました。今年も Goodle Cloud 界隈を盛り上げていけるよう頑張っていきたいと思います。 クラウドエース データソリューション部 について クラウドエースのITエンジニアリングを担う システム開発統括部 の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのが データソリューション部 です。 弊社では、新たに仲間に加わってくださる方を募集しています。もし、ご興味があれば エントリー をお待ちしております! 今回は、次世代データ基盤であるデ

    次世代データ基盤:データレイクハウスを Google Cloud で実現する
  • gitでstashが面倒なあなたにautostash

    gitでrebaseしまくるzaruです、こんにちは。rebaseする時、編集途中のファイルがあるとstashしてくれと怒られますよね。当に面倒くさいのですが、これを一発でstashしなくて済む方法を紹介します。

    gitでstashが面倒なあなたにautostash
  • 【初学者向け】具体例で学ぶTypeScript練習問題集

    TypeScript を学習中の方に勧められる練習問題集として手頃なものがないなと思い、作ってみました。 TS の問題集としてはtype-challenges がよく話題に上がりますが、実用上あそこまでの型パズルを使うことはあまりないため、最初に取り組むにはハードルが高いです(もちろん知っていたら便利ではありますが、初学者向けではない)。 想定読者 JavaScript を書くことには慣れている TypeScript はこれから・まだ慣れていない TypeScript の基的な型についてはすでに知っている はじめに JavaScript の機能に関する問題は扱いません。TypeScript の型システムに関する問題のみ扱います。 そもそも TypeScript についてよくわかっていない場合、サバイバル TypeScriptなどで学習から始めてみてください。 「型がつけられると何が嬉しい

    【初学者向け】具体例で学ぶTypeScript練習問題集
  • 負荷テストツール「k6」入門

    こんにちは。 PharmaX でエンジニアをしている諸岡(@hakoten)です。 この記事の概要 API負荷テストツールにGrafana Labs社が開発している「k6」というツールがあります。 k6はオープンソースのCLIツールですが、 「Grafana Cloud k6」というクラウドベースSaaSツールも提供されている便利なツールです。 ローカルのk6は、負荷テストの時に使ったことはあったのですが、真面目に負荷テストの設計をするにあたり、ちゃんと理解したかったため、改めて基から調べてみました。k6の入門記事としてお役に立てれば嬉しいです。 インストール Macでは、k6を「Homebrew」でインストールすることができます。

    負荷テストツール「k6」入門
  • 新規サービスのバックエンド開発で3ヶ月経ったので、試した技術や取り組みをまとめてみた

    こんにちは、AIShift バックエンドエンジニアの石井(@sugar235711)です。 AIShiftでは去年の11月からAI Worker[1]という新しいサービスの開発が始まりました。(以下AI Worker) 格的に開発が始まり3ヶ月弱経ったので、その間に試してきた技術やチームの取り組みについてまとめてみたいと思います。 はじめに この記事では、AI Workerのおおまかな概要・設計を説明し、それらのバックエンドを実現する上でどのような技術を試してきたのか、技術以外でのチームの取り組みについてまとめます。 少し分量が多いので、ライブラリについての情報を求めている方は、目次から気になる部分を読んでいただければと思います。 何を作っているのか ざっくりまとめると、Microsoft Teams/Web上で動くAIを活用した業務改善プラットフォームを作成しています。 GPTとRAG

    新規サービスのバックエンド開発で3ヶ月経ったので、試した技術や取り組みをまとめてみた
  • 【ソフトウェア設計】モジュールをどう分割するのか?

    はじめに 前々回や、前回に引き続き、ソフトウェア設計の指針に関する話をしたいと思います。 関数やクラス、そしてサービスなどシステムの塊の単位をモジュールと呼び、モジュールを作る事で、認知負荷を下げ複雑性と戦うという話をしてきました。では、モジュールは「いつ」分割するのが良いでしょうか? また、他にも共通モジュールを不用意に作ってしまって苦労した人も多いのでは無いでしょうか? 今回はそのあたりの話をしていきます。 TL;DR 以下があればモジュール設計を見直す 単純な要件/普段の利用に対して、タイプ量や約束事が多い 共通モジュールが「使われ方」に依存する モジュールの役割を一言で説明できない コード管理や性能/データ整合性など利用に際してのペナルティが高い 分割 is NOT 正義 - FizzBuzz Enterprise Edition 複雑性を排除するためにモジュール分割をすることは重

    【ソフトウェア設計】モジュールをどう分割するのか?
  • どのレイヤー(層)でトランザクションを実装すべきか

    このように、層ごとに関心事の分離を行うことで、保守性の高い(変更容易性や再利用性等)アプリケーションを実現できます。 しかし、「トランザクション」においてはどうでしょうか。 トランザクションはビジネス領域においても、技術領域においても関心事がある内容です。 そういう曖昧なものは「ひとまず usecase 層に入れてしまえ」という方針になりがちです。 ですが、DB 固有の知識を usecase 層の関心事にしてしまっては、関心事の分離をするメリットが得られません。 そのため、関心事の分離を実現しつつトランザクション実装をする方法を模索してみました。 前提 1. クリーンアーキテクチャを採用している(オニオンアーキテクチャやレイヤードアーキテクチャも含む) そもそもビジネス知識と技術知識を分離していないアーキテクチャを採用している場合、メリットは得られません。 そのため、オニオンアーキテクチャ

    どのレイヤー(層)でトランザクションを実装すべきか
  • 【実践】エンジニアの基礎教養-アルゴリズムを学べる本

    筆者は新卒エンジニア時代に社内でアルゴリズム勉強会を主催していました。 その内容を形式に書き起こしたものになります。 【このの特徴】 📗問題演習形式でアルゴリズムの基礎が身に付く構成となっています。 📗分かりにくい概念は丁寧に図解で解説しています。 📗基礎的なアルゴリズムがどのように世の中に役立っているのかを言及しています。 アルゴリズムに関して、皆さんの理解を深めるお手伝いができれば幸いです。

    【実践】エンジニアの基礎教養-アルゴリズムを学べる本
  • 毎日本番DBをダンプして、ローカルと開発環境で利用して生産性を上げてる話

    シードデータで動作確認して大丈夫だったのに、番反映してみたら想定してなかった挙動・エラーが出た😱そんな経験はありませんか。 恥ずかしながら私は今までに何回もありました。機能開発だけじゃなくバッチやマイグレーションなんかでも発生しがちなコレ。またはシードデータで動作確認できても、番データでも通用するか検証ができないままプルリクを作る、なんていうこともあると思います。今回はこちらを無くす試みをしたお話です。 「もうDBで開発しちゃえばいいじゃない」の問題点 この課題を解決するには、極論するとDBで開発するしかないのですが、そうなると言うまでもなく以下の問題が出てきます。 レビュー通過してないコードが番に影響を与える トライ&エラーができない 個人情報をはじめとするセンシティブな情報が開発者の端末に漏れる データ量が多すぎてローカルに持ってこれない しかし言い換えると、これらをク

    毎日本番DBをダンプして、ローカルと開発環境で利用して生産性を上げてる話
  • 雑にReactアプリを作りたい時に使ってるもの

    import "./App.css"; import { Link, Route, Switch } from "wouter"; function Nav() { return ( <nav> <Link to="/">Home</Link> <br /> <Link to="/about">About</Link> </nav> ); } function Home() { return ( <div className="App"> <h2>Home</h2> <Nav /> </div> ); } function About() { return ( <div className="App"> <h2>About</h2> <Nav /> </div> ); } function App() { return ( <> <Switch> <Route path="/" compo

    雑にReactアプリを作りたい時に使ってるもの
  • 「なぜ?」を使わずに、理由を深掘るコミュニケーション

    株式会社オープンエイト、PMグループの辻です。 ここでは、プロダクトマネージャーとして働いています。ということで・・・ プロダクトマネージャーのしごと 少し前に話題になった、皆さんも読みましたか? このは、これまでのプロダクトマネジメント関連の書籍と比べて、リアルな現場の目線に近いカタチで書かれており、参考になった以上に、とても勇気をもらえる1冊でした。 これまでのプロダクトマネジメント関連の どちらかと言うと教科書的なものが多い 参考にはなるが、自社や自分の置かれた環境で上手く実践まで持っていくのが難しい そんな印象を抱かれている方も多いのではないでしょうか? これまでのプロダクトマネジメント関連の。たとえば、コレ。 これはこれで、オススメです。 このの特徴・効能 一方で「プロダクトマネージャーのしごと」を読むと、 世界的に著名なプロダクトマネージャーであっても、自分と同じよう

    「なぜ?」を使わずに、理由を深掘るコミュニケーション
  • WEBエンジニアだけど1mmも確定申告が分からないので調べたのだ~~!

    2月になると「確定申告の季節ですね~」と言うエンジニアがいるのだ。 ぼくも「そうですねー」と話をあわせるのだが 「確定申告」ってなんなのだあああああああ~~~~? 実はぜんぜん知らないのだああああああああああああああ ・・・って内心は思ってるのだ。 そんなことではいけないと思い、確定申告について調べてみたのだ! 確定申告とは? 一言でいうと「私は今年これだけ稼ぎました!」と税務署に報告することを指すらしいのだ。 うん、それは知ってるのだ。 中学生のときに「国民は納税する義務があるよ」と教えられたのだ。 でも、具体的に いつ? どれくらい稼いだら? どうやって申告する? 税金の仕組みってどうなってるの? など詳しいことは教えられていない気がするのだ。 そこらへんを掘り下げていくのだ。 その前に:会社員は? 会社員の場合は、源泉徴収(げんせんちょうしゅう)というやつのおかげで、確定申告をしなく

    WEBエンジニアだけど1mmも確定申告が分からないので調べたのだ~~!
  • 【AI動画生成】Sora 要素技術解説

    もう全部OpenAIでいいんじゃないかな はじめに 月間技術革新です。 ということで、昨日OpenAIから発表された新しい動画生成AI「Sora」が非常に話題となっていますね。 圧倒的な一貫性の保持と1分間に及ぶ長時間動画が生成可能という事で、現状の動画生成技術を圧倒的に凌駕する性能を持っているようです。 在野エンジニアの小手先テクニックなど一笑に付すような圧倒的性能を Soraの凄さは色んなエンジニアやインフルエンサーがたくさん語っているのでそちらを見てもらうとして、この記事ではSoraを構成する各技術について簡単に解説していければと思います。 Soraの技術構成 論文が公開されているわけではないですが、OpenAIが要素技術の解説ページを公開してくれているため、そのページを参考にしていきます。 原文を見たい方はこちらからどうぞ 全体構成 Soraは以下の技術要素で構成されているとのこと

    【AI動画生成】Sora 要素技術解説
  • Code Tour を使ってじっくり確実にコードを読む

    日々のタスクに忙殺されていると、ついつい既存コードを流し読みして、ざっと動くコードを書いてしまいたくなります。 一発でうまく動けば短期的にはいいのですが、長期的にはコードの理解が追いつかなったり、一発でうまく動かなかった場合にかえって時間がかかってしまいます。 VSCode拡張機能である Code Tour を使うと、コード上にメモを残しながら読み進めることができるので、既存のコードを読む際に便利です。 Code Tour とは VSCode拡張機能で、コード上にメモを残しつつ、そのメモをたどることができるツールです。 使い方 ツアーを始める コマンドパレットから「Code Tour: Record Tour」を選択すると、ツアーの記録モードになります。 ツアーの名前 どのソースに紐づけるか(紐付けなし、ブランチ、タグ) を選択すると、リポジトリ直下に .tours/${指定したツ

    Code Tour を使ってじっくり確実にコードを読む
  • え?まだgit checkoutしてるの?

    公式ドキュメントには以下のように書かれています。 THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE. 和訳:このコマンドは実験的です。動作が変更される可能性があります。 この記事の内容と違う場合があるので、ご注意ください。 この記事は2024年2月28日時点の情報です。 え?まだgit checkoutしてるの? git checkoutといえば、ブランチを切り替えたり、git addしたファイルを元に戻したりするコマンドですが、それはもう古いです。 実は2019年8月リリースのgit 2.23からgit switchとgit restoreが追加されました。 知らなかった人も多いのではないでしょうか?(恥ずかしながら私は知らなかった...) 「先輩、checkoutってなんすか?」と後輩に聞かれる前に、この記事を読んでgit sw

    え?まだgit checkoutしてるの?
  • 本に書いてあるスクラムと、お前らのいうスクラム開発は別物だということにいい加減気づいてくれ

    前振り タイトルは煽りの激しい釣りです。ごめんなさい。 Web業界で今流行っている自称スクラムと、RSGTで語られるような来のスクラムとの間のギャップが大きすぎて説明が面倒臭くなったのでこの記事を書きました。 いい加減「私たちは自称スクラム開発を完璧に回しているから、スクラムの恩恵を将来得られるだろう」「私たちは来のスクラムとはかけ離れた別物のスタイルで開発をしている。だからスクラムの恩恵は永遠に得られない」という二重思考を他人にするようお願いするのにも飽きましたしね。 さて題といきましょう 題 世間で、特に渋谷や五反田や六木のWeb企業ではスクラムというものはとても流行っています。 しかしどう考えても、Web企業でよくお目にかかるスクラムと国内トップカンファレンスであるRSGTで語られるスクラムとの間には大きな隔たりがあります。 「うちはスクラムやってます」 カジュアル面談で耳

    本に書いてあるスクラムと、お前らのいうスクラム開発は別物だということにいい加減気づいてくれ
  • プログラマーの教養としての原則

    参考 プリンシプル オブ プログラミング - 3年目までに身につけたい一生役立つ101の原理原則 発行: 2016/3/23 著者: 上田 勲 まえがき プログラマーの世界で語り継がれる原則や格言を知ることは、その共通の言語や道徳を理解する手助けとなります。 『プリンシプル オブ プログラミング』(以下、プリプロ)は、統一された語句と形式により、先人のプログラマーたちが重要視していた思考法やアプローチを、微妙な概念の違いに気を使うことなく理解できるよう構築されています。この記事では、このを読む上で役立つ101の原則マップと原則から抽出した価値観をまとめます。プリプロを読む際のガイドになればと思います。 一方で、プリプロに収録されていないウィットに富んだ原則や格言も多く存在します。この記事では、主に私の現場で重要視しているプリプロの101の原則以外の原則・格言も追加で紹介します。 プログラ

    プログラマーの教養としての原則