タグ

ブックマーク / qiita.com (393)

  • エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita

    どうもエラーを出すもしくはエラーが出るのが怖いという人がいるみたい。例えば改修を行うときに既存部分でエラーが出ないことを最優先にして増築を行いいびつな構造を生み出すとか、単純に例外を全然使わないとか。エラーが出ると、「うわ、エラーになった。手間かけさせやがって面倒だなぁ…」みたいな感覚があって、とにかく自分がコードを書くときも一切例外を投げないというスタンスをとりがちなのかもしれない。 私はここで、適切にエラーが出てくれるのはむしろ喜ばしいことであり、自分がコードを書くときも積極的にエラーを出すようにすべきだ、という主張をする。 関数定義のドキュメンテーションの一部 ある関数の中身で一番最初に書くべき処理は何か、それは引数のチェックをして条件を満たさなければエラーを出すことである。例えば文字列は特定の形式になってなければならないとか、数値に最大値最小値があるとか、これらは関数の入力の前提条

    エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita
    hirose504
    hirose504 2024/05/06
  • たった2つのステップを意識するだけで書けない単体テストがほぼなくなる - Qiita

    はじめに この記事は レガシーコード改善ガイド: 保守開発のためのリファクタリング を参考に手を動かしてみて、ある程度自分の中で体系的にまとまった知識のアウトプットです。 この記事で扱う内容 この記事で扱うのは主にレガシーコードで単体テストを書く際のハードルになりがちな 依存関係の排除 に関する手法を紹介します。 この記事を読んだ後に、 『この観点を持っておけば単体テストをスムーズに書いていけそう!』 『今までモック使ってたけど意外とモック使わなくても書けるね!』 となったらいいな、と思います。 ちなみに、今まであんまりテスト書いたことないよーて人は以下の記事など参考にして一度やってみてください。 前提の話: この記事の旨は「テスト書きにくいプロダクトコードも依存関係を排除すれば楽にテスト書けるよ」なので、それ設計的にアウトでは?リファクタリング耐性低くない?みたいな話は度外視してます。

    たった2つのステップを意識するだけで書けない単体テストがほぼなくなる - Qiita
    hirose504
    hirose504 2024/03/19
  • いつか起業したいエンジニアへ - Qiita

    はじめに 34 歳のとき、勤めていた会社の経営が傾き早期退職を促されたのを契機に独立しました。その後、41 歳で Authleteオースリート 社を設立しました。諸般の事情で現在も Authlete 社の代表取締役という肩書きを持っていますが、経営者的な仕事は他の人に任せ (参照: シリコンバレーのプロフェッショナル CEO を迎えて米国市場に挑戦する日のスタートアップの話)、50 歳目前の現在もプログラマとしてコードを書き続けています。 Authlete 社設立 (2015 年 9 月) から 8 年半弱経過したものの、まだまだ小さな会社で道半ばであるため、起業家として何か語るのは時期尚早ではあるものの、軽い体調不良が長引く中、『自分のエンジニアとしてキャリアを振り返ろう!』という記事投稿キャンペーンを見かけ、生きているうちに子供世代のエンジニアの方々に何か書き残しておこうと思い、文章

    いつか起業したいエンジニアへ - Qiita
    hirose504
    hirose504 2024/03/04
  • ハッカーのおもちゃとしてのNostrのススメ - Qiita

    はじめに Nostrという、SNSのようなものはご存知でしょうか? ご存知でなければ、ぜひまず一度触ってみることをお勧めします。 割と普通にSNSっぽく使えます。 分散系SNSっぽいシステム Nostrは、分散系のSNSっぽいネットワークです。 図で表すとこんな感じ。普通に想像するWebサービスとは随分形が違うと思います。 各所のリレーサーバーに、ユーザーは投稿をばらまき、ユーザーがそれを見る形です。 分散の責任がユーザー(クライアント)側にあって、リレーサーバーが落ちたり消えたりしても影響が起きにくい仕組みです。 より詳しい説明は上記でやってるのですが、端的に言って 中央管理者がいない(各リレーに管理者はいる) 冗長で災害に強い Websocketのリアルタイム通信 オープンでシンプルで、でも拡張し放題な仕様 数多のサーバーによる分散ネットワーク といった特徴があります。 ※P2P技術

    ハッカーのおもちゃとしてのNostrのススメ - Qiita
    hirose504
    hirose504 2024/01/04
  • JavaScriptの小技集 - Qiita

    はじめに 初投稿です。 知ってたら便利になる小技が無かったのでまとめました。 「小技が知りたい...だけど検索しても出てこない...!」 そういう時に役立ちます。 比較的古いバージョンのJSでは一部の小技が使えないかもしれません。 随時追加予定です。他に小技をご存じの方はコメント欄にGO。 おことわり この記事は、あくまで"こんなやり方もあるよ"と紹介しているだけなので、何でもかんでもこれらの小技を使うと、かえってコードの可読性を下げる可能性があります。コードサイズと可読性を天秤にかけてどちらが良いかを都度確認しましょう。 記事内の間違った部分の指摘等はこの記事のコメントや編集リクエストでして下さい。 当方コードゴルファーなので、バイト数短縮小技も入れていることをご了承ください(一応該当する節には*をつけています)。 配列 配列の重複した値を削除1 const meta = ["foo",

    JavaScriptの小技集 - Qiita
    hirose504
    hirose504 2024/01/03
    `in array` は指定の要素を配列に含んでいるかなので、指定の長さ以上あるかを確認するのには使えない(と思っていたが、`2 in [1,10,100]` はtrueだったよ、ごめんね
  • 知っていますか?Pandasをノーコーディングで高速化(CPU環境でも)できるらしい… FireDucks🔥🐦 - Qiita

    知っていますか?Pandasをノーコーディングで高速化(CPU環境でも)できるらしい… FireDucks🔥🐦Pythonpandasデータサイエンス統計検定 はじめに Pandasで大量データを扱って処理時間にイライラしたことはないでしょうか? なんと、Pandasを従来のコードを変えずに高速化するライブラリィが出たみたいです。 NEC研究所が出したFireDucks 🔥🐦 というライブラリィで、ベータ版が無償公開されています。 しかも CPU環境でも高速化されるみたいです。詳細は下記のサイトを参照してください。 ベーター版ですが無償とは素晴らしいですね! 早速検証してみましょう。 環境 FireDucksの利用方法には、「インポートフック」、「明示的なインポート」の2種類があります。 「インポートフック」の場合は、pythonの起動時にオプションを指定することでコードの書き換え

    知っていますか?Pandasをノーコーディングで高速化(CPU環境でも)できるらしい… FireDucks🔥🐦 - Qiita
    hirose504
    hirose504 2023/12/21
  • 2023年版データ分析の100冊 - Qiita

    データ分析の必読10冊+差をつける10冊+100冊超】データサイエンス、データ分析機械学習関連のがご好評いただいてましたが古くなりごちゃごちゃしているので新たに作り直しました 記事のめあて IT系の技術者の方がデータ分析関連の仕事をするために役立つを紹介する(私が学び始めた時にあれば欣喜雀躍したであろう)記事として書いております。 記事作者の青木はバイオインフォマティクス(ゲノムデータのDB化中心・PerlMySQL)からRで時系列分析→Pythonデータ分析一般と業務をしてまいりました。 ですので研究者目的のはありません。また、データ分析の基礎は主にRで学んだのですが、昨今の流行に合わせてPythonを中心に、Rのは参考程度にしています(記事のR版のご要望があれば爆裂書きます!) こういうリストをあげる奴は大抵読んでいない、と過去にも言われたのですが、ほとんど読ん

    2023年版データ分析の100冊 - Qiita
    hirose504
    hirose504 2023/08/27
  • TypeScript型定義ファイルのコツと生成ツール dtsmake - Qiita

    JavaScriptからTypeScript用型定義ファイル( d.tsファイル )を生成する dtsmake というツールを作った。その過程で型定義ファイルのコツが色々と見えたので紹介込みでまとめてみたい。 型定義ファイルで消耗してませんか? TypeScriptでjsのライブラリなどを使う時に必ず問題になるのが、型定義ファイルの存在。DefinitelyTyped にあれば tsd で取ってくればいいが、問題は無い場合。そもそも非公開ライブラリの場合はあるはずもなく、自分で型定義ファイルを書くことになる。 私のようなノンプログラマの多くがそうであるように、ただライブラリを使いたいだけ、のような場面ではこれはかなりのコストがかかり、TypeScriptで消耗する原因のかなりの割合を占めるのではないかと推測している。 dtsmake について dtsmakeはそういった「 とりあえず使いた

    TypeScript型定義ファイルのコツと生成ツール dtsmake - Qiita
    hirose504
    hirose504 2023/06/20
  • ChatGPTで独自データを学習させて回答してもらう方法 - Qiita

    ChatGPT,使っていますか? ChatGPTは文章を要約したり、プログラム作ってくれたり、一緒にブレストしてくれたりして当に便利なのですが、社内情報などの独自データに関する情報については回答してくれません。 プロンプトに情報を記述して、そこに書かれている情報から回答してもらう方法もありますが、最大トークン4000の壁がありますので、限界があるかと思います。 この課題についてなんとかならないかと考えて色々と調べて見たところ、解決する方法が見つかり、いろいろと検証をして見ましたのでその結果をシェアしたいと思います。 サンプルコード(GoogleColab) 百聞は一見にしかずということで、実際に試したサンプルは以下にありますので、まずは動かしてみることをお勧めします。 このコードを上から順番に動かすと、実際にインターネット上から取得したPDFファイルに関する内容をChatGPTが回答して

    ChatGPTで独自データを学習させて回答してもらう方法 - Qiita
    hirose504
    hirose504 2023/05/08
  • フロントエンドテストにおける知見の宝庫を発見!「javascript-testing-best-practices」 - Qiita

    フロントエンドテストにおける知見の宝庫を発見!「javascript-testing-best-practices」JavaScriptテストフロントエンド はじめに JavaScriptにおけるテストのベストプラクティスをまとめた「javascript-testing-best-practices」というGitHubレポジトリが大変勉強になったため、特に参考になった内容をまとめて共有したいと思います。 (補足)レポジトリにはfrontendのみならずbackendのテストに関する情報もありますが、今回はfrontendに焦点を当てて共有します。そのため扱うSectionは以下の4つです。 Section 0: The Golden Rule Section 1: The Test Anatomy Section 3: Frontend Section 4: Measuring Test

    フロントエンドテストにおける知見の宝庫を発見!「javascript-testing-best-practices」 - Qiita
    hirose504
    hirose504 2023/02/16
  • ソフトウェアテストの実行を効率化するPredictive Test Selectionの衝撃 - Qiita

    12月10日の2022ソフトウェアテストアドベントカレンダーです。 Launchable社でエンジニアとして働いているcvuskと申します。機械学習界隈では機械学習を実用化するためのシステム開発のを書いてたります。もし良かったら読んでみてください。 『機械学習システムデザインパターン』 『機械学習システム構築実践ガイド』 ブログでは機械学習を用いてテスト実行を効率化する手法として、Predictive Test Selectionについて説明します。テスト実行時間やコストで課題を抱えているエンジニアに役に立つと幸いです。 昨今の開発におけるテスト事情 2002年に『テスト駆動開発』が世に出て、ソフトウェア開発でテストを書くことが常識になって早20年が経っています。その間にクラウドの登場やDevOpsの普及により、テストをCI/CDパイプラインで自動実行し、コードとプロダクト品質を維持す

    ソフトウェアテストの実行を効率化するPredictive Test Selectionの衝撃 - Qiita
    hirose504
    hirose504 2022/12/11
    半年後くらいにはテストを自動生成するようになってそうだな
  • Spring Security 5.4〜6.0でセキュリティ設定の書き方が大幅に変わる件 - Qiita

    この記事について 最近(5.4〜6.0)のSpring Securityでは、セキュリティ設定の書き方が大幅に変わりました。その背景と、新しい書き方を紹介します。 非推奨になったものは、将来的には削除される可能性もあるため、なるべく早く新しい書き方に移行することをおすすめします。(既に削除されたものもあります) この記事は、Spring Securityのアーキテクチャの理解(Filter Chain、 AuthenticationManager 、 AccessDecisionManager など)を前提としています。あまり詳しくない方は、まずopengl_8080さんのブログを読むことをおすすめします。 サンプルコード -> https://github.com/MasatoshiTada/spring-security-intro 忙しい人のためのまとめ @Configuration

    Spring Security 5.4〜6.0でセキュリティ設定の書き方が大幅に変わる件 - Qiita
    hirose504
    hirose504 2022/05/31
  • みんな、とにかくオセロAIを作るんだ - Qiita

    オセロAIってなんか難しそう?そんなことはありません。むしろゲームAIを学ぶ様々なレベルの人にこれ以上ないくらい最適です。この記事ではオセロAIを作ると何が良いのかをひたすら語っていきます。そしてオセロAIをこれから作る人のために参考になりそうな記事をいっぱい貼り付けていきます。 私自身はもうかれこれ1年以上オセロAIにどっぷりハマっています。詳細は以前書いた記事で。 オセロAIをおすすめする3つの理由 1. 原始的なゲーム木探索を学べる オセロは「二人零和有限確定完全情報ゲーム」と呼ばれる種類のゲームです。この名称を説明すると、 二人: 二人で行われる、 零和: どちらかが得をすればもう片方が同じだけ損をする、 有限: 探索すべき範囲(ゲーム木)が有限で、 確定: 手番が一意に定まり、 完全情報: ランダム要素などの予期せぬ情報がない、 ゲーム: ゲームである という意味です。チェスとか

    みんな、とにかくオセロAIを作るんだ - Qiita
    hirose504
    hirose504 2022/05/22
  • 💣Webフロントエンドにおける関数型「風」プログラミングに関する個人的まとめ - Qiita

    ここ数年の流れについて 技術的側面 Webフロントエンド(ほぼTypeScriptReact界隈)において、オブジェクト指向(厳密に言うとクラスの利用)から脱却する流れがあります。原因は以下の2点。 クラスの継承の問題点が(IT業界全体に)広く定着したこと JS/TSの進化、Reactの進化、関数型言語の考え方などの影響により、クラスを用いてデータと関数群を紐づけるメリットが薄くなったこと 現状、設計レベル(実務的にはどの関数を纏めてモジュール化するのか、モジュール同士をどう繋ぎ合わせるのか、フォルダ割りどうするのか等)のノウハウがまだ固まっておらず、既存の設計論はそれなりに有効です。 コミュニティ的側面(政治) これらの流れはWebフロントエンドの中でもTypeScriptReactの界隈が主導しており、そのノウハウは長年絶対視されてきたオブジェクト指向を解体するような内容であったた

    💣Webフロントエンドにおける関数型「風」プログラミングに関する個人的まとめ - Qiita
    hirose504
    hirose504 2022/03/17
    純粋関数だけなら兎も角、副作用のある関数をよく分からんスコープで使いたくないな
  • React 18に備えるにはどうすればいいの? 5分で理解する - Qiita

    React 18はReactの次期メジャーバージョンで、2021年の6月にalpha版が、11月にbeta版が出ました。また、Next.js 12でもReact 18のサポートが実験的機能として追加されました。React 18の足音がだんだんと我々に近づき、アーリーアダプターではない皆さんの視界にもいよいよReact 18が入ってきたところです。 特に、React 18ではServer-Side Rendering (SSR) のストリーミングサポートが追加されます。現在ReactでSSRを行いたい人の強い味方としてNext.jsが存在しているわけですが、Next.js 12でもReact 18を通してストリーミングの恩恵を受けることができます(Next.jsではSSR Streamingと呼んでいるようです)。また、厳密にはReact 18とは別ですが、React Server Comp

    React 18に備えるにはどうすればいいの? 5分で理解する - Qiita
    hirose504
    hirose504 2021/11/25
  • なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita

    はじめに ソフトウェアプロジェクトには不思議な性質があります。現状のスケジュールに課題を感じて、短くするために人員を投下しても、なかなか思い通りに短くならない。それどころか悪化してしまうことがあります。場合によってはプロジェクト自体が破綻して失敗してしまうことすらあります。 今回は、このようなソフトウェアプロジェクトに潜む直感に反する性質を数理的なモデルを介して理解していく試みです。ある種の思考実験としてお楽しみください。 宣伝 Qiitaさんとコラボ企画でアドベントカレンダーをつくりました。 DXをめちゃくちゃ改善した話を募集しています。 https://qiita.com/advent-calendar/2021/dx-improvement 10人の妊婦がいても1ヶ月で一人の子供は生まれない これは誰かの技術力やプロジェクトマネジメント力に欠陥があるのではなく、「人月の神話」で有名な

    なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita
    hirose504
    hirose504 2021/11/01
  • やっと React Server Components が腑に落ちた - Qiita

    2020 年末に発表された React Server Components は、一言でいうと React コンポーネントをサーバ側でレンダーする仕組みです。……が、初見ではちょっと魔法すぎて訳が分からない技術でもあります。トーク動画だけ見てても「具体的にどんな仕組みで動いてるの?」みたいな疑問が山ほど浮かんでくると思います。 一体裏で何がどうなっているのか、この技術はどう使うのか、デモコードを触りながらやっと具体的に理解しはじめたので、なるべく動作が想像しやすいようにまとめました。なお、この記事単体よりは、他の記事や上記動画を見てある程度概要や公式の売り文句を掴んでからの方が理解しやすいと思います。 これまでの、普通にブラウザで動作するコンポーネントのことを、区別のためにクライアントコンポーネントと呼びます(単に区別のために既存のコンポーネントに別名がついただけです)。以下ではサーバコンポ

    やっと React Server Components が腑に落ちた - Qiita
    hirose504
    hirose504 2021/09/22
    “パラメータを付けて HTTP コールすると仮想 DOM(をシリアライズしたもの)が返ってくる URL”
  • 技術ようつべチャンネル集 - Qiita

    役立つYouTubeのチャンネルまとめ 数学、物理、アルゴリズム、プログラミング、などなど自分が使う技術に役立ちそうだな、困ったときによく見たなと思うチャンネルを紹介する。 取っ掛かり、ハマりがち、コツみたいな物が拾える。数学がメイン。随時更新していくつもり。 当たり前だけどちゃんとも読んで勉強するんだぞ。 背景 YouTubeは視聴する登録チャンネルの数が増えると、チャンネルが埋もれて発掘困難になりがち (chrome拡張でできるチャンネルのフォルダ分け機能は、ぽちぽち登録するのも面倒で、そのフォルダの中から掘り出すのも難しい) モチベが上がる(おべんつよしたい)チャンネルを探してるうちに湧いてくる、わんにゃんコンテンツ(だいちゅき)に流され一日が終わるため、 モチベが上がる有用なチャンネルにすぐにたどり着くために、よく使うQiitaに列挙しておくことにした Streamや大学専用サイ

    技術ようつべチャンネル集 - Qiita
    hirose504
    hirose504 2021/07/15
    イケメンがJavaScriptを基礎からReactやNext.jsあたりのモダンなWeb開発の最先端まで教えてくれるよ!最近はITニュースっぽいラジオもやってるし、Tailwind CSS講座は今後楽しみ https://youtube.com/c/shimabu_it
  • 色々書き比べた結果Tailwind CSSにしたという話 - Qiita

    Twitterでこういう発言を見かけまして Tailwind CSSはデザインに凝ってるサイトでは使えない こだわりが無い場合に向いている は?何いってんの? って思ったので、自分がいろいろ試した結果、Tailwind CSSを選んだ話を書きます。 はじめに 以前、Tailwind CSSは結構いいぞって話を書いたんですが、この記事の立ち位置的にはその続きみたいなものなので、以下の記事を始めにご参照いただけるとより分かりやすいかもしれないです。 この記事では、前回記事を書いた後、個人仕事でWebサイトをGatsbyで作り、その中で、どうやってCSSを書くのが良いのか模索した結果、自分はこれを選んだっていうのを、同じUIを色々な方法で書き比べたコードを並べつつ、どうのこうの筆者の考えを述べていきます。 その仕事はほとんど筆者が「まかせてくださいよーいい感じに作りますよー。デザインそろってない

    色々書き比べた結果Tailwind CSSにしたという話 - Qiita
    hirose504
    hirose504 2021/06/07
    Just-in-Timeモード知らなかった
  • 一銭も払わずにクラウド上でWebサービスを公開する(2021/02時点) - Qiita

    これはなに? Webサービスを開発する際に使えるサービスのうち、無料枠があるものをまとめました。 自分でちょっとしたWebサービスを作ろうと思ったときに一銭も払いたくないなという気持ちがあるが、そもそもどの程度までちゃんとした構成が取れるんだっけというのをこれまでに100万回調べている気がするので自分用にまとめたメモです。 前提として、基的にはAWSGCPを対象に調べて、一部はそれ以外のサービスも追加で調べている、という感じです 最初に結論 「無料でWebサービスを提供する」というところだけに集中するならAWSよりはGCPのほうが良さそう(ハードルが低そう + できることが多そう) 無料枠だけで完結させるならherokuSQLも使えるし視野に入れて良さそう ドメイン周りだけはどうにもならないので諦めてお金を払うか各クラウドサービスのドメインのまま使いましょう 無料の範囲内で最低限のW

    一銭も払わずにクラウド上でWebサービスを公開する(2021/02時点) - Qiita
    hirose504
    hirose504 2021/03/04
    Firebase Hosting が無料でCDNも備えているはず