サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
qiita.com/kt3k
Deno アドベントカレンダー 24日目の記事です。 今日は Deno を使って Node でも Deno でも動くライブラリ(もしくはツール)を作成する方法を紹介します。 Deno 界隈では最近 npm 互換性機能がリリースされて、Deno から使えるツールが一気に増えたということで話題になっていますが、逆に Deno で作ったツールを Node/npm に対応させるという逆向きの互換性についても開発が進んでいます。 この記事では、Deno が公式で提供している dnt というツールを使う方法を紹介します。 dnt を使った場合の、Node と Deno 両対応の主な流れは次のようになります。 まずは Deno で動くようにツールを作る (Deno に対応) dnt を設定して、ツールのエントリーポイントを Node 用に変換出来るように準備する dnt を実行して Node 用モジュー
Deno アドベントカレンダー 11日目の記事です。 Deno には現在サブプロセスを実行・制御するための API として Deno.run / Deno.spawn系 / Deno.Command の3系統があり、どれを使って良いか分からないという疑問を聞くことが多いです。 結論から言うと、この3つの API のうち、Deno.Command を使うべきです。本記事ではその理由と、各 API が出来た経緯について解説します。 Deno.Command を使うべき理由 Deno.Command は Deno.run と Deno.spawn系の問題を解決した最終的なデザインの API という位置づけです。近い将来 (Deno v1.30 ぐらい) に安定化される可能性が高く、Deno.Command を使っておけばプログラムがそのまま動き続ける可能性が最も高いと考えられます。 ただし、De
2022年4月、Deno に以下のバグが報告されました。 fetch API を使って 300KB ぐらいあるファイルをアップロードすると、一定確率でアップロードされたファイルが壊れるというバグの報告です。 報告者によれば、1.20.6 まではバグは発生しておらず、1.21.0 から発生するようになったという事です。1.20.6 の次のリリースが 1.21.0 なので、パッチバージョン1個分まで、バグの発生時期が特定されている状態です。 fetch 周りは自分はほぼ実装していないので「担当範囲ではない」感覚だったので、普通にスルーしていました。 自分に限らず、Deno Land コアチームの誰もこの issue にピンと来る人が居なかったようで、stale ボット (数ヶ月進捗の無い issue を自動的にクローズしようとするボット) に2回もクローズされかけていました。Deno の st
Deno (ディノ) Advent Calendar 3日目の記事です。 今日は dnt というツールについて紹介します。 dnt とは dnt は Deno 向けのソースコードを Node.js 向けのソースコードに変換するためのツールです。Deno のコアチームメンバーである、David Sherret さんが主に開発しています。GitHub の denoland org 以下にホストされており、位置付け的には Deno 公式の Deno to Node.js の変換ツールです。 使い方 次のような内容の build_npm.ts を用意します。 import { build } from "https://deno.land/x/dnt/mod.ts"; await build({ entryPoints: ["./mod.ts"], outDir: "./npm", package
Deno (ディノ) Advent Calendar 2020、25日目の記事です。今日は Deno が Node.js に依存しなくなった経緯の話をします。 Node.js に依存しながら始まった Deno の開発 Deno は、プロジェクトが始まって以来いくつかの点で Node.js に依存して開発が進められてきました。おもに Node.js に依存していたのは以下の3種類のプログラムです。 バンドラ parcel (のちに rollup に移行) フォーマッタ prettier リンタ tslint (のちに eslint に移行) この中でバンドラが最も最初に Deno 製のツールにリプレースされ、その後フォーマッター、リンターの順でリプレースされていきました。リンターがリプレースされたのはつい最近 (2020年11月) のことです。この記事ではそれぞれの経緯・手法について紹介して
Deno (ディノ) Advent Calendar 2020、18日目の記事です。 今日は、prompt 関数を Deno に実装した話をします。 TL;DR ブラウザの window.prompt() に相当する関数を Deno の API として実装しました https://github.com/denoland/deno/pull/7507 実装そのものは比較的簡単。なぜこの API を入れる必要があるのか、その意義を理解してもらうことに苦労しました。 モチベーションは本の執筆 以前 Denobook 2 を執筆したときに、完全にプログラムの初心者の人に向けて Deno・JavaScript の機能を1から解説していくという記事を書いたのですが、その時不便に感じたのがプログラムへの入力が非常に煩雑であるということでした。 従来の API だと標準入力から1行受け取る呼び出しは以下の
Deno の公式レジストリの登録方法が変わりました! 本記事ではその登録方法について解説します。 (この記事は Deno の公式レジストリに自分の書いたモジュールを登録してみたい人向けの記事です。npm にモジュールを登録した経験がある人などが主な対象読者です。) Deno の公式レジストリとは Deno の公式レジストリは https://deno.land/x にあります。(特に固有の名称などはありません。単にレジストリと呼ばれることが多いです。) これまで、ここに自分の作ったモジュールを登録するには、公式ホームページのレポジトリにある JSON ファイルに PR を出して、 手動でマージしてもらうことが必要でした。 (旧来のワークフローでは手動のレビューとマージをしていました) この若干面倒だった登録フローが、8/3のアップデートで、 PR を出す必要のない自動的なワークフローに置き
Deno (ディーノ) Advent Calendar 18日目の記事です. 今日は date-fns を Deno から使う話です. date-fns とは date-fns はとても機能が豊富な時刻を扱うためのライブラリです. 一昔前は, 時刻といえば moment を使うのが一般的でしたが, 最近では moment のバンドルサイズが大きすぎることや, API のデザインの筋の悪さ(破壊的なメソッドが多い)から moment 代替のライブラリがいくつか活発に開発されています. その中でも人気が高いライブラリの一つが date-fns です. date-fns は moment や dayjs などと違い, 時刻を表すための独自クラスを持たない点が特徴です. 独自クラスを使わずに JavaScript の builtin 型である Date 型を, API の入出力として使います. つ
Deno (ディーノ) Advent Calendar 13日目の記事です. 今日は Deno で AWS Lambda 関数を実装するためのツール deno-lambda の使い方を紹介します. deno-lambda は @hayd Andy Hayden さんが作った, Deno で Lambda 関数を実装するためのツールです. 手順 deno-lambda のリリースページ に行き, 最新バージョンの deno-lambda-layer.zip をダウンロードしてください. AWS Console の Lambda のページに行き Layers タブを選択し, Layer の作成選んでください. 任意の名前を入力し(例. deno-lambda-layer), ダウンロードした deno-lambda-layer.zip をアップロードしてください. アップロード完了したら作成ボ
Deno (ディーノ) Advent Calendar 8日目の記事です. 今日は Deno にコントリビュートするためのヒントを紹介します. Deno 本体をビルドする Deno にコントリビュートするためには, まずは Deno をビルドしてみましょう. Deno 本体をビルドするためには以下のツールが必要になります. Rust 1.39 Python 2.7 Python 3 はダメなので必ず2系をインストールしてください (ただし来年以降は3になる可能性があります) ビルドには必要ありませんが lint やフォーマッティングのために更に以下が必要になります. Node.js 12 Deno をビルドする Deno のリポジトリは以下のコマンドで clone できます.
Deno (ディノ) Advent Calendar 3日目の記事です. 今日は改めて Deno ってなんだっけ? をおさらいしてみましょう. ひとことでいうと Deno は一言でいうと Node.js みたいなやつの新しいやつです. もうすこし詳しくいうと もうすこし詳しくいうと, Deno はターミナルから使うコマンドラインツールで, Deno を使ってサーバーを立ち上げたり, ファイル処理をしたり, いわゆるプログラミング言語で出来る様々な処理を実行することが出来ます. Deno は Node.js と同じように Google Chrome の JavaScript エンジンである V8 エンジンをベースにして作られているので JavaScript 言語を使って Deno のプログラムを書くことが出来ます. すでに JavaScript 言語をある程度知っていれば, すぐにでも De
Deno (ディーノ) Advent Calendar 9日目の記事です. 昨日の記事では Deno 本体にコントリビュートする方法を解説しましたが, Deno 本体に PR を投げることだけがコントリビュートではありません. 本記事では Deno 本体以外で Deno にコントリビュートする方法を紹介します. Deno のホームページ Deno のホームページのソースコードは以下のコマンドで clone 出来ます. デザインで気になった点, 表現で気になった点など, ホームページ で気になった点を修正して, PR を投げてみましょう. またホームページの issue もあるため, そちらを解決するのもおもしろいかもしれません. アイコン @hashrock さんが下の Deno のアイコンをコントリビュートしたことは Deno コミュニティの中では有名です. 公式ドキュメントの中でも使わ
Netlify は無料の静的サイトホスティングサービスです。GitHub のレポジトリと連携することが出来て、特定ブランチの内容と同期して、静的サイトを自動的に更新してくれます。また、ブランチの更新にフックして、静的サイトのビルドコマンドを指定することも出来て、ブランチ更新 -> Netlify 上で自動ビルド -> サイト更新という簡単なワークフローを組む機能も持っています。 🌱buttons では、GitHub 上にはビルド前のソースコードだけを commit して、後述の bulbo というビルドツールでビルドした静的サイトを Netlify 上にホスティングしています。 Database MongoDB はドキュメントデータベースと呼ばれるタイプのデータベースです。RDBMS よりもお手軽に開発を開始できます。 node.js では mongoose という ODM ライブラリが
tl;dr make をタスクランナーとして使うことに疲れた (.PHONY ってもう書きたくない) yaml ベースのタスクランナーは幾つかあったがしっくり来ない (go-task / robo) そもそもタスクの記述言語をマークダウンにした方が良いのでは? マークダウンベースのタスクランナーを作った! saku! (update: Go言語バージョンも作った!) モチベーション 自分は普段、趣味も仕事もほとんど JavaScript ばかり書いているため、タスクランナーとしては npm run-script を使っています。 run-script はタスクのドキュメントが書けないとか、タスクにコメントをつけれないとか(JSON の文法の制約上)、不満点は色々ありますが、npm-run-all などの支援ツールを利用することで、必要最低限のタスク定義は十分にできるツールと個人的には思って
React Native の packager cli (デフォルト構成で始めて、npm start で起動するやつ) はビルドモジュールをキャッシュして、必要な部分のリビルドしかかからないようにしてくれているため、2度目以降のビルドが高速になって便利ですが、例えば、.babelrc を更新して babel オプションを変えた場合など、キャッシュを一旦クリアしたい場面があります。 そういう場合は、以下のコマンドでキャッシュがクリアできます。 参考: https://github.com/facebook/react-native/issues/1924 注意 上のスレッドを見てもわかるように、クリアの手順が度々変わっているようなので、上のコマンドでうまく行かない場合は、上のスレッドを漁ってみてください。クリアに成功している場合は、js バンドルのフルビルドが走るため、数十秒 ~ 数分程度の
自己紹介 日野澤歓也 (ひのさわよしや) github / qiita は @kt3k 今日はリントの話です JavaScript のリントツールと言えば JSLint / JSHint / ESLint などがありますが 今日紹介するツール Standard という名前のリントツール コマンド名が standard 内部的には ESLint を使っている ESLint おすすめルール集的なものとも言える 特徴1 (リントルール) セミコロンなし 2スペースインデント リントルールは基本的にコンフィグ不可能❗️ プラグイン単位での追加は OK e.g. eslint-plugin-flow eslint-plugin-vue など 特徴2 (コマンド) ファイルの自動検出 standard コマンドを打つとリントすべきファイルをほぼ勝手に探してくれる (↑ 具体的にはこの辺を ignore
この記事は CureApp Advent Calendar 2016 18日目の記事です。 今日はドメインモデルのドキュメンテーションの話です。 さて、DDD を実践していくと、成果物としてドメインモデルの定義が上がってきます。最終的には、それをソースコードに落とし込むというのが、DDD の目標ですが、その前に一旦、これこれのドメインモデルが定義された、ということを記録する必要が必ず生じます。 その定義をどうやって保存するかというのはチームによってまちまちなのではないかと思いますが、自分の経験上、どこにどういう形でドメインモデルのドキュメントを残すかはわりと意見が分かれるトピックです。 自分が今までやってきた手段としては、wiki (コンフルーエンス) に残す、Google スプレッドシートに残す、ホワイトボードに手書きしたものを写真でとるなどの手法をやってきましたが、どれも一長一短でした
standard は feross が作った だいたい 全部入りの JavaScript の style checker です。 内部的に eslint を使っていますが、ルールの変更が基本的に不可能だったり(ルールについてプロジェクト毎に考えるべきでないという思想のため)、リントすべきファイルについてのルールがあらかじめ含まれていたりして、eslint を生で使う場合に比べて、考えることを大幅に減らせることが特徴です。 特徴 セミコロンなし 2-space インデント ルール単位でのでコンフィグ不可 ルールをコンフィグできない事でスタイルを統一するべきという思想のため。 プラグイン単位での追加は可能 (例えば、eslint-plugin-react を追加するなどはできる) cli (standard) を引数なしで呼び出すと、リントすべきファイルを勝手に全てリントしてくれる stand
This is a Japanese translation of Headless Browser Testing With Xvfb by Toby Ho. Toby Ho は JavaScript のテストフレームワーク testem の作者。testem は Google が開発する Karma フレームワークと並んで、実ブラウザ上でテストケースを走らせられるツールとして人気があります。 by Toby Ho, 2015/01/09 いまどき "ヘッドレスブラウザ" と言うと、PhantomJS がすぐに思い浮かぶかもしれませんが、実は他にも選択肢があります。この記事では Linux で使える Firefox, Chrome などの実ブラウザのヘッドレスな (GUI 無しでの) 実行の仕方の紹介をします。(そのために Xvfb というツールを使います) PhantomJS の何が問
この記事は CureApp Advent Calendar 2016 13日目の記事です。 今日は、デザインの話、というか、デザインをいかにしないかという話です。 web サイトを作っていると良くある依頼: web ページを作ってほしいんだけど、デザインにかけるコストを 限りなく少なくしてほしい。 でも それなりに最低限の見栄えがする程度にはしてほしい。 ほら、例えば Bootstrap のデフォルトぐらいにはしてほしい。 こういう何となく都合の良いお願いをされることがよくあります。そして、本当にコストをかけないで数行の css で持って行くと「なんか違う」「もうちょっと何とかならないか」的な意見が出て、気がついたらそれなりに作り込んでいるということが良くあります。 依頼される場合以外でも、自分でなんらかの web ページを作りたい時に、単純に情報共有だけが目的で、デザインはどうでも良いと
この記事は CureApp Advent Calendar 2016 2日目の記事です。 今日は新しいモックライブラリの testdouble.js の話です。 モックとは ソフトウェア開発におけるモックとは、テスト環境において本物を使ってしまうと何らかの理由で都合が悪いものを、テスト環境で本物とすり替えて使う何らかの 偽物 のことです。 「テスト環境において本物を使ってしまうと都合が悪いもの」の例としては、例えば、データベース接続、外部API接続など、環境を準備することができない/面倒/コストが高いものなどがあります。モックを使うことで、そのような構築コストの高い環境設定をスキップして、効率よくテストを実行することができます。 また、モックを使う別な理由として、テストの実行速度の高速化があります。ファイルアクセスやデータベースアクセスは一般的に遅いため、そこをモック処理に置き換えることで
qiita.com/kt3k@github
karma + babel + browserify + isparta を使って、es2015 で書いたフロントエンドテストのカバレッジを出す設定JavaScriptTDDkarmacoveragebabel こちらの記事も合わせて参考にしてください。 - karma + babel + istanbul でフロントエンドのカバレッジを出す設定 2016年版 フロントエンドで es2015 かつ browserify でバンドルしつつ書きたいという需要はそこそこ高まっているんじゃないかと思いますが、そのセッティングで開発した場合に、テストカバレッジってどうやって出したらいいの?という情報があまり出回っていない気がしたので、自分なりにミニマルだと思う設定の例をまとめてみました。 なお、この記事では、テストランナーには、karma、バンドラには browserify を使う前提で書いています
このページを最初にブックマークしてみませんか?
『@kt3kのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く