タグ

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

  • あなたの知らない less の世界 - Qiita

    最近 prezto 入れたんですよ。prezto。そしたらいつものシェル世界が見違えるほど使いやすくなって身長も 3 メートルくらい伸びたんですが、それは余談でして、prezto 入れた後に less 使ってみたら余りの変わりっぷりに驚いたんです。 これを機に man page を読み直してみたら更に驚き。less ってこんなスゴイ物だったのか!みたいな。今回はそんな less の底力を紹介します。 環境変数 $LESS less には様々なオプションがあるのですが、これを予め環境変数 $LESS に設定しておくと、毎度 less ファイル名 と打つだけでそれが有効になります。更に、後述しますが、この設定は less 起動中にオン・オフして切り替えることが可能です。 # 最低限でもこれくらいは設定しておこう export LESS='-i -M -R' # 僕は後述の物を全部付けてます(-

    あなたの知らない less の世界 - Qiita
    takets
    takets 2023/09/21
  • TypeScriptの "any" と "unknown" の役割と違い - Qiita

    any 役割: any 型は TypeScript の型システムの一部を無効にするものです。変数が any 型の場合、その変数に対して任意の操作を行うことができ、コンパイラはそれをチェックしません。 主な使用ケース: 既存の JavaScript コードを TypeScript に移行する場合や、他のライブラリやフレームワークとの互換性を持つために一時的に型チェックをスキップしたい場面で使用されます。 リスク: any 型を使用すると、型の安全性が失われ、ランタイムエラーの原因となる可能性があります。 unknown 役割: unknown 型は最も厳格な型として考えられます。unknown 型の変数は存在は確定していますが、その型が何であるかは不明です。したがって、unknown 型の変数を直接操作することはできず、その型を具体的に確定させる必要があります。 主な使用ケース: 外部のライ

    TypeScriptの "any" と "unknown" の役割と違い - Qiita
    takets
    takets 2023/09/13
  • GitHubで特定行へのパーマリンクを素早く表示する方法 - Qiita

    GitHubでソースコードの特定の行へパーマリンクする方法が便利なのでメモしておきます。 参照:Stack OverflowのQA GitHubで表示されるソースコードは、行番号をクリックすると、その行が下図のようにハイライトされ、最後尾に#L74というような行番号がついたURLに移動します。 複数行を選択する場合は、最初の行を選択後、シフトキーを押しながら最後の行の行番号をクリックします。URLの最後尾は#L74-L81のようになります。 ここで、yをタイプすると、masterへのリンクではなく、その特定のコミットへのパーマリンクにURLが移動します。 特定行へのパーマリンクへ瞬時に移動する便利なコマンドの紹介でした。 Register as a new user and use Qiita more conveniently You get articles that match yo

    GitHubで特定行へのパーマリンクを素早く表示する方法 - Qiita
    takets
    takets 2023/08/17
  • JavaScriptデザインパターン入門 - Qiita

    1. はじめに JavaScriptデザインパターンは、JavaScriptを使ってプログラムを書くときによく出くわす問題を解決するためのガイドです。これらのパターンの背後にある考え方を理解することで、自分の問題に適用することができます。また、これらのパターンが自分のコードに役立つ場合を見つけることもできます。 2. モジュールパターン モジュールパターンは、JavaScriptのモジュールシステムの一部で、データを保護する方法を提供します。これは、モジュール内のプライベートなデータと動作を保護し、一方で公開APIを提供する方法です。これにより、プライベートとパブリックのアクセスレベルを持つ自己完結型のモジュールオブジェクトを作成することができます。 これは、JavaC++のような言語でクラスにアクセス修飾子を使用するのに似ています。 JavaScriptでは、クロージャを使用してモジュ

    JavaScriptデザインパターン入門 - Qiita
    takets
    takets 2023/07/31
  • ChatGPTプラグインの「Webpilot」と「Show me」の組み合わせが最強 - Qiita

    ChatGPTのプラグインが開放されてから色々と試したところ、「Webpilot」と「Show me」の組み合わせが最強と気が付いたので、紹介します! おすすめのプラグインは以下のページで解説しています! また、ChatGPTを使ってエンジニアの生産性を上げるChatGPTの活用方法とプロンプト例は以下の記事で紹介しているので、こちらも併せてご覧ください。 ChatGPTプラグインとは ChatGPTプラグインは、ChatGPTをサードパーティのアプリケーションと連携させるツールです。 これは、GoogleスプレッドシートのアドオンやGoogle Chrome拡張機能と同様に、公式だけでなく第三者の開発者が作成した機能をChatGPTに追加することで機能を拡充できるものとなっています。 具体的には、プラグインを利用することで、ChatGPTに以下のような機能を追加できるようになります。

    ChatGPTプラグインの「Webpilot」と「Show me」の組み合わせが最強 - Qiita
    takets
    takets 2023/07/26
  • ChatGPTとCopilotに要件だけ伝えて自動コーディングしてもらう(AIペアプロ) - Qiita

    ※この記事は個人的な実験の記事です※ ※実験内容は随時記事を更新していきます※ 24時間いつでも手助けをしてくれるGitHub Copilotさん。 24時間文句も言わずにいつでも親切に回答してくれるChatGPTさん。 そんな両者に要件だけ伝えて自動コーディングしてもらおう(AIペアプロ)、という実験記事です。 Copilot自動コーディング動画 以下の動画は、最初に要件だけをコメント入力して、それ以降はCopilotの提案を受け入れているだけになります。 コメントの入力と提案の受け入れ以外は、全くタイピングをしていません。 コメントの内容は Next.jsでボタンをクリックしたら画像を選択してブラウザに表示する です。 完成品 要件のコメントと受け入れだけをしたコードを実際に動かしてみました。 自動コーディングしてもらったコードは以下の通りです。 // Next.jsでボタンをクリック

    ChatGPTとCopilotに要件だけ伝えて自動コーディングしてもらう(AIペアプロ) - Qiita
    takets
    takets 2023/07/26
  • スクラムでストーリーポイントを時間に紐付けて運用すると何が起きるか - Qiita

    はじめに みなさんは、スクラムでストーリーポイントを付けるときどのような基準でつけているでしょうか? ストーリーポイントの基準は時間にすべきではないと言われています。 しかしながら、 スクラムを初めて導入して今まで時間対の工数見積もりに慣れていたチームや請負型の社外パートナーが入ったプロジェクトなど、現実的には時間を基準にしてストーリーポイントを運用しているプロジェクトも多いでしょう。 また、ストーリーポイントの見積もりを付け始める際の最初の基準として「4時間 = 1ストーリーポイント として考えよう!」というように知らず知らずのうちにそのような運用になっているケースもあると思います。 私は経験から、ストーリーポイントの基準を時間にするのは、プロジェクト管理に大きい悪影響をもたらすアンチパターンであり、すべきではないと結論づけています。 私が経験してきたプロジェクトで、ストーリーポイントの

    スクラムでストーリーポイントを時間に紐付けて運用すると何が起きるか - Qiita
    takets
    takets 2023/07/04
  • SIerでのGitHub Copilotの業務活用に向けた検討ポイントをまとめてみた - Qiita

    OpenAIが開発したコード生成AIの「Codex」や、その技術を活用した「GitHub Copilot」が注目を集めています。Qiitaや技術ブログではCopilotを試してみた系の記事も多く公開されており、好意的な反応と共に紹介がされているように感じます。 これらのコード生成AIやツールを開発業務で活用しようと考えた際、どのような効果が見込めるのか、プログラマの心理やパフォーマンスにどのような影響を及ぼすのかが気になったので、CodexやCopilotの実装能力やプログラマに与える影響を調査した研究事例などを調べました。 この記事では、調べた結果を基に、SIerにおける開発業務でCopilotやCodexといったソースコードが生成できるツールやAIを活用するにあたって留意するべきポイントなどを、私の感想を交えながらご紹介します。 記事で紹介する範囲 記事では、SIerがCopilo

    SIerでのGitHub Copilotの業務活用に向けた検討ポイントをまとめてみた - Qiita
    takets
    takets 2023/06/27
  • 半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita

    はじめに こんにちは、kenです。 今回は「プログラミングで区間を扱いたいときは半開区間が良いよ」という話をします。 もしかしたら有名な事実かもしれませんが、友達にこの話をしたら知らなかったという顔をされたので、自分の理解を深めるためにも記事にすることにしました。 数学で区間を扱う際は実数上で考えることが多いかと思いますが、この記事では区間を考える際、整数全体の集合上での区間を考えることにします。 また以下ではleft(またはl)とright(またはr)という文字式を使って説明しますが、このときleft $ \leq $ rightという関係性は常に満たされているものとします。 半開区間とは? 半開区間の前に、開区間と閉区間についておさらいしておきます。 開区間は(left,right)のように表され、両端点を含まないleftからrightまでの区間を表します。 一方で閉区間は[left,

    半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita
    takets
    takets 2023/06/27
  • 凄腕エンジニアさんから学んだ例外の話 - Qiita

    はじめに 今携わっているプロジェクトで凄腕エンジニアさんと一緒に開発をさせていただいているのですが、その凄腕エンジニアさんから教えていただいた例外の話がとても勉強になり、 さらにこの例外の話を他のプロジェクトエンジニアさんに伝えたところ、反応が良く、とても勉強になりました!という声をいただけたので、アウトプットしていきたいと思います。 (この記事の中で凄腕エンジニアさんのことはTさんと呼ぶことにします。) ※【凄腕エンジニアさんから学んだ例外の話】の補足 というQiita記事を書きました。 この記事を読み終わった後に疑問が残った人などは補足資料として読んでいただけると嬉しいです。 例外の考え方の源 Tさんの例外の考え方は http://diveintopython3-ja.rdy.jp/your-first-python-program.html#exceptions ↑こちらのPyth

    凄腕エンジニアさんから学んだ例外の話 - Qiita
    takets
    takets 2023/06/27
  • 【TypeScript】カリー化・部分適用は便利だよ! - Qiita

    TypeScript】カリー化・部分適用は便利だよ! カリー化・部分適用利用してますか? 調べたけど「関数を第一級オブジェクトとしてー」とか「関数を部分適用してー」とか説明が講義っぽくて途中で諦めた方も多いと思います。自分もそうでした。 また、知ってるけどどんな時に使うべきか迷って使ってないという方もいると思います。 具体的なコードを交えながら、カリー化・部分適用について、噛み砕いて説明していきたいと思います。 なお、すべてのTypeScriptのサンプルコードは実際に動かして確認することができますので、TypeScript Playgroundなどで是非お試しください。 カリー化と部分適用 まずはカリー化と部分適用の定義をば。 カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引

    【TypeScript】カリー化・部分適用は便利だよ! - Qiita
    takets
    takets 2023/06/20
  • 質問は恥ではないし役に立つ - Qiita

    一年半SEとして働いてきた中で、私自身が苦手だと思っており、他人からもそのように評価されていたのが「質問の仕方」でした。 それが先日、他人から「質問の仕方がうまいね」と褒められることがあり、ようやく一人前の質問の仕方ができるようになってきたので、どのようにして克服できたのか紹介したいと思います。 質問の基形 私が入社したばかりの頃は、わからないことがあればすぐに先輩に質問していました。 そのときにしていた質問の内容はだいたいこんな感じです。 「環境構築を手順書通りにやったんですけど、○○のコマンドでエラーがでてしまいます!なんとかなりませんか?」 このような質問を受け取ったら、先輩は暇ならばエラーメッセージを見てくれ、エラーメッセージに書かれていることに対して調査してくれるかもしれませんが、忙しいときにはそんなことはしてもらえません。 こんな質問を繰り返しているうちに先輩からは「技術系メ

    質問は恥ではないし役に立つ - Qiita
    takets
    takets 2023/06/18
  • OpenAI Function Calling を Zod + TypeScript で型安全に扱う - Qiita

    概要 OpenAI の Chat Completions API に Function Calling と呼ばれる新しい機能が追加されました。これを使うと、JSON Schema で指定した型に従う JSON 文字列を GPT が返してくれます。(ただし 100% valid な JSON が返る保証は無い) 特にライブラリに頼らずに Function Calling を利用しようとすると、 JSON Schema を書く OpenAI API にリクエスト 返ってきた JSON 文字列をパースして検証する というステップが必要になって面倒ですが、Zod のスキーマさえ書けば 1, 3 の手間を省きつつ型安全に実装することができます。 目指す姿 import { z } from "zod"; // 手動でコードを書くのは関数の名前、説明文、Zod スキーマの部分だけ const func

    OpenAI Function Calling を Zod + TypeScript で型安全に扱う - Qiita
    takets
    takets 2023/06/17
  • 【ChatGPT】新機能「Function calling」が凄すぎた - Qiita

    tl;tr ChatGPTの新機能「Function calling」はすごい。 今後注目される機能になっていくと思われる。 ChatGPTの新機能「Function calling」について 6/13のアップデートで、ChatGPTに新たな機能「Function calling」が実装 されました。 「Function calling」は、ChatGPTに「呼び出すことができる関数」を教えておく機能で、ChatGPTがこの関数を呼び出せるようになります。 この機能を活用すると、ChatGPTを経由することで、曖昧な指示でも関数が実行できるようになります。 「Function calling」の概要と可能性 概要 ChatGPTに呼び出せる「functions」をパラメーターとして渡します。 この状態で通常通りChatGPTに送信をすると、関数の呼び出しを要求するレスポンスが帰るようになり

    【ChatGPT】新機能「Function calling」が凄すぎた - Qiita
    takets
    takets 2023/06/17
    写経用コード
  • 自動テストはなぜうまくいかないか?乗り越えるためには何が必要か? - Qiita

    リファクタリングの鶏卵問題 ソースコードがクソなので綺麗にしたい。 リファクタリングしたい。 しかし、リファクタリングが出来ない。 リファクタリングが出来ないのは、テストが無いからだ。 よし。じゃあテストを書こう。あれ、テストが書けない? そのようなテストが無く、書き換えられないことによる矛盾や憤りは皆さん何百回と感じてきたと思います。 しかし、この「テストが出来ない」ということを言語化するのは、非常に難しいと思います。それは、「テストが出来ない」には実は2つの視点があります。 質的にテストが困難なモジュールで、誰がやってもテストが書けない。 質的にモジュールはテスト可能だが、自分の実力が足りず、自分ではテストが書けない。 1.のようなテスト困難なモジュールは誰がやってもテストは書けないです。しかし、問題は、「テストを書きたい」と思ったとき、「自分がそれほどテストに詳しくない」という場

    自動テストはなぜうまくいかないか?乗り越えるためには何が必要か? - Qiita
    takets
    takets 2023/06/13
  • await-to-js で非同期処理(Promise)の try/catch をなくそう - Qiita

    API 通信などのエラーハンドリングはどうしていますか? await したものを try/catch で囲む、もしくは Promise の catch を使うなどがありますが、きちんと都度エラーハンドリングしていくとコードが複雑になりがちです。 await-to-js はそういったエラーハンドリングの辛さを解消する手段の1つとして効果的です。 それでは簡単なエラーハンドリングの例を元に説明していきます。 非同期処理のエラーハンドリング 例えば「ユーザーを取得してタスクを保存する」というものを考えてみます。 async function saveUserTask(userId) { // ユーザー取得 const user = await fetchUser(userId); if (!user) { throw new Error("存在しないユーザー"); } // タスク保存 cons

    await-to-js で非同期処理(Promise)の try/catch をなくそう - Qiita
    takets
    takets 2023/06/10
  • 【完全保存版】OpenAIが教えるChatGPTからより良い結果を得るためのプロンプトのコツ - Qiita

    OpenAIの公式ページに、ChatGPTに使われているモデルである「GPT」を使う上でのベストプラクティスが公開されていました! そこで、ここでは、そのベストプラクティス集を参考に、ChatGPTからより良い結果を得る方法を解説していきます! 原文を読みたい方はこちらの記事をご覧ください! 以下の記事では、おすすめのChatGPTのプラグインを紹介しているので、こちらもぜひご覧ください。 1.明確な指示を出す ChatGPTは非常に優れたAIですが、さすがに私たちの考えを読み取ることはできません。 したがって、ChatGPTから希望する回答を得るためには、私たちの考えを詳細に伝えるために明確な指示を出すことが大切です。 OpenAIは、この「明確な指示」を出すための具体的なアドバイスを以下の6つのポイントで紹介しています。 詳細な説明をする ペルソナを設定する デリミター(区切り記号)を

    【完全保存版】OpenAIが教えるChatGPTからより良い結果を得るためのプロンプトのコツ - Qiita
    takets
    takets 2023/06/10
  • ChatGPTに会話の長期記憶を持たせてみる - Qiita

    はじめに (今後ステートフルなAPIが出てきたり、入力トークンの制限が大幅に解除されると状況は変わるかもしれません。2023/6現在での試行錯誤となりますことご理解下さい。) (※6/15追記 16kバージョン出てきましたね。日語だと1万語くらいでしょうか。500トークン(300文字くらい?) x 20 往復くらいまでなら対応できるようになりましたが、これでも足りないケースとか、もしくは(3)の方式の要約情報を他でも使う、とかならまだまだ有効な内容かなと思います。) ChatGPTでアプリを作ると、会話履歴が大量に入らないことに困るタイミングがあると思います。よくある方法は過去10往復の会話のみ保持するとかになると思うんですが、それだと困るシーンも結構ありますよね。 そもそもなんで無限に会話が入らないかというとChatGPT(gpt-35-turboを対象)では、4096トークンという上

    ChatGPTに会話の長期記憶を持たせてみる - Qiita
    takets
    takets 2023/06/04
  • LeaderF の紹介 - Qiita

    LeaderF とは 候補一覧を雑に絞り込んでコマンドを実行できるプラグインです。 似たようなプラグインには Denite.nvim や ctrlp.vim などがあります。 LeaderF の作者は、インデントの可視化をするプラグインの indentLine も作っている Yggdroot さんです。 README に実際に LeaderF を使っている動画が載っています。 インストール方法 Plug を使っている場合、以下のようにインストールします。 " LinuxMac の場合 Plug 'Yggdroot/LeaderF', { 'do': './install.sh' } " Windows の場合 Plug 'Yggdroot/LeaderF', { 'do': '.\install.bat' } LeaderF は Python を使って実装されているため、Vim で Py

    LeaderF の紹介 - Qiita
    takets
    takets 2023/05/31
  • GitHub Copilot導入後、初めて使う時。(豊富な使用例付き) - Qiita

    GitHub Copilotが長いコードを提案してきた時、ショートカットキーの「単語単位で受け入れる」を使用すると便利です。 ※ インライン候補をトリガーするとは提案が表示される場所ならばどこでも GitHub Copilot が動きます。 例えば、提案が表示される場所からカーソルが動かしてしまっても、カーソルを元の場所に戻してトリガーコマンドを使うと提案が表示されます。 ※ インライン候補をトリガーするはデフォルトのキー設定では動きません。:Windows で確認 自分でキーボードショートカットキーを設定する必要があります。(これは自分の環境だけかもしれません。) 導入後(課金後) 導入後に何をしていいのか?何が出来るのかがよくわからなかったので調べてみた。 環境 Windows10 GitHub Copilot (導入 1年契約 or 1月契約) VSCode VSCode Insi

    GitHub Copilot導入後、初めて使う時。(豊富な使用例付き) - Qiita
    takets
    takets 2023/05/12