JavaScriptの非同期処理を理解する:Promise完全入門 - 基本から使い方まで

はじめに

システム開発第一事業部の奥田です。普段はフロント寄りのフルスタックエンジニアとして、Webアプリの開発を担当しています。

前回の記事では、JavaScriptの非同期処理の基礎から「コールバック地獄」と呼ばれる課題、そしてそれを解決する仕組みとしてPromiseが登場した背景について紹介しました。

今回はその続編として、Promiseを基礎からしっかり理解することをテーマに進めていきます。

JavaScriptで非同期処理を扱うとき、避けて通れないのがこの Promise です。 API呼び出し、ファイル読み込み、タイマー処理など、現代のWebアプリケーション開発において非同期処理は欠かせません。 また、前回の記事でもJavaScriptの非同期処理のシンタックスシュガーであるasync/awaitの内部もPromiseであるとお伝えしました。

「え... Promiseって理解するの難しくない?」

という声が聞こえてきますね。 確かに、非同期処理は直感的に理解しづらい部分も多く、特に従来のコールバック関数ではコードが複雑になってしまう問題がありました。

ですが、安心してください!


この記事では、その問題を解決する Promiseの仕組みと使い方 をわかりやすく丁寧に解説していきます。

しっかりとPromiseの基本をマスターし、使いこなせるようになってパイセンを驚かせてやりましょう!

そのために、他の記事では触れられることが少ない、Promiseの内部的なところまで深掘りしてお伝えしていきます。

また、この記事はシリーズ第2回に当たる記事です。

変更があるかもしれませんが全体では以下のような流れで進める予定です。

続編の記事は随時書いていきますので楽しみに待っていてください!

続きを読む

AIエージェントが音を上げるまで開発させ続けてみた

本投稿は TECOTEC Advent Calendar 2025 の22日目の記事です。

DX本部システム開発第一事業部の椎葉です。 先月、 Claude Code のクレジットが無料配布された際に、 ふと以前から気になっていた事を試してみたので、そのお話をさせて頂きます。


最近のAIエージェント

今年は、そろそろLLMの単純性能が伸び悩み始めてきた感のある一方で、 外付けで実質的なコンテキストの拡張を試みるAIツールが急激に数を増やしました。

去年まではごく限られたAIエージェントにしか本格実装されていなかった会話や要約情報の記憶、それによるプロジェクトやタスクの管理、多段階の推論機能など、今やどれも珍しい機能ではありません。

こういった外部記録を前提とする機能の利用は、機密情報の扱いをより一層難しくしますが、 serenaなど使いやすいMCPが出てきたことで、必要ならローカルで管理するという選択肢も取りやすくなったのが嬉しい所です。 github.com

ところで、こういった管理機能の発達により、LLMはコンテキスト制限を超えて連続的な思考をしたり、大規模な課題に取り組んだり出来るようになりました。その影響か近ごろは「プロジェクトを丸ごと管理」「要件定義から実装まで一気通貫」のような謳い文句のAIサービスを多く見かけます。

もちろん、それはあくまで理屈の上での話で、実際にはAI丸投げで結果が出せる訳じゃないと思います……が、

実際の所、どれぐらいまでなら「良い感じ」にやってくれるんだろう?

今までは、プロンプトの質がAI駆動開発の質に直結すると信じて骨を砕いてきましたが、 実はもっと手を抜いても、よしなにやってくれるのかもしれない。

やってみましょう。
続きを読む

Webで表現する HD-2D風オンライン空間

本投稿は TECOTEC Advent Calendar 2025 の最終日の記事です。

レジャーソリューション事業部の横山です。
普段はフロントエンド専任のエンジニアとして、主にVue/Nuxtを使ったWebアプリケーションの開発を行なっています。

早速ですが、皆さんは「HD-2D」という表現を聞いたことはありますか?

これはスクウェア・エニックス社が商標登録している、
ドット絵のゲームを現代風にアレンジした表現技法のことです。

【参考: オクトパストラベラー】

ピクセルアートが醸成した古めかしさと、美麗で奥行きのある空間が、
なんとも言えないノスタルジックで不思議な空気感、没入感を演出してくれるのですよね。

一見とても高度な技術に見えますが、3Dの空間に2Dのドット絵を配置し、
エフェクトを重ねていくだけ
でもある程度は表現可能です。

実際にUnityのようなゲームエンジンを用いて再現している記事や動画は幾つか見つかるのですが、
Web(Threejs)でも同じことが可能なのか、今回はデモサイトを作りながら検証していきたいと思います。

続きを読む

LLM(AI)をシステムに組み込んでみて思ったことの備忘録

本投稿は TECOTEC Advent Calendar 2025 の24日目の記事です。

こんにちは、証券フロンティア事業部の吉澤です。 普段は Python を用いた開発や、保守・運用業務を担当しています。

今回、LLM(大規模言語モデル)の API を利用し、プロンプトエンジニアリングを含むシステムの構築・実装を行いました。 本記事ではその経験をもとに、システムに AI を組み込む際に気を付けた点と、今振り返って「もっと気を付けるべきだった」と感じた点について紹介します。

動機は翻訳タスク

今回は、バッチ処理で文章を日本語から英語へ翻訳することを目的として LLM の API を利用しました。 当初は Google Translation API を用いた翻訳を検討していましたが、 最終的には LLM に翻訳させる形を選択しました。

続きを読む

Cloud Run functionsのデプロイに関する権限まとめ

本投稿は TECOTEC Advent Calendar 2025 の23日目の記事です。

こんにちは。システム開発第一事業部の武田です。普段はエンジニアとしてフロントエンドやバックエンドのシステム開発を行っております。

この記事ではGCP(Google Cloud Platform)を用いたシステムでCloud Run functions(第二世代)を扱う上での権限周りの整理を行います。 主にHttpトリガーやPub/Subトリガーで利用する際の整理になります。

続きを読む

処理の置き場所を整理して、「とりあえず動く」コードから「変更に強い」コードを書く

本投稿は TECOTEC Advent Calendar 2025 の21日目の記事です。

こんにちは、証券フロンティア事業部の山本です。
普段の業務は、PHPでAPIやバッチの開発を行っています。

皆さんはMVCフレームワークで開発をしていて、「コントローラー(Controller)がどんどん長くなって読みづらい…」 と感じたことはありませんか?

プログラミングを学び始めた頃や、チュートリアル通りに書いている時は、「動くこと」が最優先です。しかし、実務で開発が進むと、「機能を追加したいのに、どこを直せばいいかわからない」「一箇所直すと他が壊れる」といった悩みにぶつかることがあります。

今回は、Laravelを使用し、よくある「ユーザー新規登録」を題材に、「処理を適切な場所に分ける(レイヤー分け)」 という考え方を紹介します。

よくある「全部入り」のコード

まずは、Laravelの入門記事などでよく見かける書き方を見てみましょう。
今回は、 「メール認証フロー」(登録ボタンを押すと、認証用リンクがついたメールが送信され、それをクリックすると登録完了となる仕組み)を想定します。

続きを読む

Unison言語を試してみる

本投稿は TECOTEC Advent Calendar 2025 の20日目の記事です。

DX本部システム開発第一事業部 の川﨑です。新卒1年目で、普段は、TypeScriptでフロントエンドやバックエンドの開発を行っています。

今日はUnisonという言語について調べてみます。

注意:筆者は自分でUnisonのプログラムを書いた経験があるわけでなく、以下の説明は、公式ドキュメントなどで調べたことをまとめたものであることを念頭に置いてお読みください。もし改善点や指摘などあれば、はてなブックマークのコメントなどで教えてください。

今回は特徴の説明と軽いチュートリアルを行います。

Unisonの特徴

Unisonは静的型付きの関数型プログラミング言語で、構文としては関数型言語のHaskellに似ています。 目立った特徴が2つあります。

特徴1. ソースコードをファイルで管理しない

Unisonは、ファイルで管理するのではなく、コードベースと呼ばれる専用のデータベースでコードが管理されている一風変わった言語です。 コードベースでは、1つ1つの関数は、関数に対応する一意的なハッシュで管理されています。

続きを読む