やわらかテック

興味のあること。業務を通して得られた発見。個人的に試してみたことをアウトプットしています🍵

JavaScript

HonoのNode.jsランタイムにマージされた神PRを見てみる

先日、Twitterにて素晴らしいツイートを見かけました。 うおおお。@usualoma さんの神PRをマージしたぞ。これでHonoがNode.js上で3倍近く速くなった!これはFastifyよりかは少し遅いけど、他のフレームワークと比べると十分速いレベルで、Node.jsの世界にお…

Cloud Run上でのexpressとhonoのパフォーマンス比較

最近、JavaScript界隈の盛り上がりがすごいですね。 zigで作られたJavaScriptのランタイムであるbunは、その便利さ・パフォーマンスの良さから驚くような勢いで広まっています。その一方で新たな軽量WEBフレームワークhonoも非常に注目されています。 honoも…

sequelizeで全テーブルに対してTRUNCATEを実行する

業務でsequelizeというNode.js製のORMマッパーを触る機会がありました。 単体テストを実行する度に、データベース(MySQL)のテーブルをクリア(全削除)するために制約を無視してTRUNCATEを全テーブルに対して実行したいのですがsequelizeでは対応するメソッド…

【OBSで使用可能】スプラトゥーン3の武器をランダムで表示するサービスを公開しました

最近、Twitchでスプラトゥーン3のプレイを配信しています。 その中でただプレイするだけだと面白くないので、武器をランダムで選択してバンカラマッチ(対戦)できたら面白いかも...と思ったのですが、配信でいい感じに使える武器をランダムに選択してくれるサ…

関数型言語とはどんな言語なのかChatGPTに聞いてみた

近年、ハードの発展に伴って関数型言語の名前をよく聞くようになりました。 当時、何も知らなかった自分は「バグが出ないコードが書ける」という噂を聞きつけて、elixirというプログラミング言語に出会いました。その後、Haskellの学習を通じて関数型言語と…

【JavaScript】setIntervalでawaitをする方法

setIntervalでawaitが効かない setIntervalはPromiseのオブジェクトではないため、awaitさせて実行終了を待つことが出来ません。例えば、3秒毎にカウントを1ずつ増やしていく処理をsetIntervalで実装をすると以下のようになります。 const sleep = (ms) => s…

【JavaScript】連番の配列を生成する4つの方法と速度比較

連番の生成に関して 意外と使用する頻度が高かったりします。他言語であればRange(eg: 1..10)のようなClassやデータ構造が定義されており、簡単に連番の配列を作成することが出来ます。しかし、JavaScript には連番の配列を簡単に生成するための機能が提供さ…

型のある言語は一度は経験するべきだと思った出来事が起きた

型があるのが良いのか この話題は度々、議題に上がり、多くの人が討論をしています。 個人的な近年の傾向としては、golangやTypeScrpitの流行、PythonやRubyが型アノテーションが導入されるなど、型のある言語(静的型付け言語)への需要が高まっているように…

【JavaScriptで解説】部分適用って何?カリー化との違いは?

部分適用とは何か。またよく混同されるカリー化という手法とは何か。部分適用とカリー化の説明をしながら、2つの違いを明確にしていきます。解説にはJavaScriptのサンプルコードを用いています。関数型言語の概念や知識がなくても理解できるように書きました…

特に意味のないデフォルト引数が保守性を低下させるので注意

機能追加の依頼がきた いつものように業務をこなしていると、スケジュール管理機能にとある機能追加の依頼が来ました。 内容としては複数のスケジュールを作成する関数で祝日での場合には、祝日に該当する日にはスケジュールを作成しないようにしたいとのこ…

【API設計】jsonを返す時はできる限りフィールドのkeyを統一してあげよう

APIの仕様書が送られてきた 外部連携させて頂く企業様から、新規に追加されるAPIの仕様書を頂きました。ユーザーが登録しているカテゴリの総数と、その内訳を取得することが出来るAPIだそうで、新たに追加されたとのことです。しかしながら、蓋を開けてみる…

【JavaScriptサンプル有り】例外が発生した後の処理を高階関数にまかせる

これは便利 リファクタリング 既存のコードを安全に改善する(第2版)作者:MartinFowlerオーム社Amazon こちらの書籍で紹介されていた、リファクタリングの手法の1つで、例外が発生した後の処理って場面によって何をしたいか違うよねを叶えるた…

JavaScriptでのスマートな再帰関数の書き方【ECMAscript2015以降対応】

仕事でJavaScriptを書くことが多くなりました。以前より学んできた多くの関数型言語で一般的に使用されている再帰関数をJavaScriptでもスマートに書けないものかなと模索してみました。 「普通にforや、mapを使えば良いのでは?」という問いかけに対する答え…

【作って学ぶフロントエンド】ReactのuseStateの仕組みについて

Hooksについて Reactのバージョン16.8に導入されたHooksという機能によって、class componentを使用せずとも、functional component(以降: FCと記述)にstateを用意することが可能になりました。 FCにstateを用意するのは非常に簡単で以下の構文を記述するの…

【現役エンジニアが考察】はじめてのプログラミング言語習得のコツ。挫折しないためにはどう学ぶべきか

この記事を書く理由 個人的にElixirというプログラミング言語の勉強会を主催したり、セミナーに登壇する中で多くのプログラミングの初学者や、現在、学習をしているが、何をしていいのか分からないなど多くの相談を受けた。毎度、回答する中で「参考になりま…

docker-composeを使ってReact+phoenix+postgresの環境を構築する

概要 ほとんど個人的メモです 自身でよく構築することの多い以下の環境を毎度、調べながら作るのが面倒なのでまとめたって感じです React(front end) phoenix(backend, elixir web framework) postgres(open source database) 毎度悩むのが、dockerのimageを…

cloud-functionにFirebaseの値を取得して返すAPIをデプロイしてみた

前回 www.okb-shelf.work 前回の記事でcloud-functionを使って、元から記述されていたサンプルコードをデプロイするところまで触りました 今回はもう少し面白みのありそうなことをやってみたので記事にしました こちらの動画を元にやってきます やること clo…

【デプロイまでわずか10分】JaveScriptでcloud-functionのデプロイまでを体験した

何かサーバーレスたるものが流行ると聞く サーバーレスって何やねん APIなどがcallされた時に動き出して、処理が終了したらまたさよなら 常時サーバーが起動してない。呼ばれた時にパッと現れパッと消える インフラを作る必要なし。コード(関数)のみをデプロ…