Node.js

[Electron] ダイアログで指定したファイルを読み込む

今回はファイルダイアログでファイルを指定しその内容を読み込んでみます。 Electronで実装するにはいくつかのパターンがありますが、ここではOSの機能を利用するダイアログの表示とファイルを読み込む部分はメインプロセスが担当し、それ以外の部分をレンダ…

[Electron] アプリのアイコンを設定する - electron-builder編

アプリの顔である「アプリアイコン」を設定します。 今回はelectron-builderを利用してビルドする際の内容です。 アイコン画像を設定するのは非常に簡単なのですが、個人開発しているプログラマー的には画像を用意するのが一番ハードル高いですねw

[Electron] メニュー「アプリについて」をカスタマイズする

メニューからWindowsなら「ヘルプ」→「(アプリ名)について」、macOSなら「(アプリ名)」→「(アプリ名)について」とたどるとアプリのバージョン情報や製作者名が表示される機能をElectronではAboutPanelと呼びます。 今回はこのAboutPanelの表示内容をカスタ…

[Electron] アプリのメニューを作成する

Electronでアプリの「メニュー」を作成します。 基本的にはElectronのドキュメントの内容に沿って、Electronに予め用意されている機能を利用しWinodwsとmacOSの両方に対応するところまでを取り上げます。

[Electron] ユーザーの言語環境を取得する - app.getLocale()

Electronでユーザーの言語環境を取得します。 日本国内で日本人向けにのみ公開する場合は何も気にせず日本語で実装すれば良いわけですが、AppStore(Mac)やMicrosoftStore(Windows)で販売を計画している場合はやはり多言語対応したくなりますよね。

[Electron] Webの技術だけでWindowsやmacOS用のアプリを作成する

HTMLやJavaScriptだけでPC用のアプリが作成できるツールはいくつかありますが、その中でもVisualStudioCodeやSlackなどの実績があるElectronは検討候補から外せないでしょう。 1つのソースコードで複数のプラットフォーム用のアプリを同時に開発できるのは非…

はじめてのSocket.io #3 チャット編「ユーザー間でのなりすましを防ぐ」

Socket.ioでチャット開発するシリーズも3回目。 前回はSocket.ioから送信されてきた発言内容が自分の物かを判定するプログラムを書きましたが、この仕様だと簡単に他人へのなりすましが出来てしまいます。今回はこれを防ぐ簡易的な方法を紹介しつつ、チャッ…

[Node.js] expressで作るHTTPサーバ - 入門編 その3「非同期処理とファイル」

※この記事は専門学校の講義用に作成されたものです Node.js+expressでHTTPサーバを作成する第3段。今回は最終的にファイル処理について取り上げるのですが、その前に知っておかないとグローバル変数以上のハマりどころである「非同期処理」についても説明し…

[Node.js] expressで作るHTTPサーバ - 入門編 その2「グローバル変数の生存戦略編」

※この記事は専門学校の講義用に作成されたものです Node.js+expressでHTTPサーバを作成する第2段。今回は「罠」にも「武器」にもなるポイントについてお話します。 PHPでサーバサイドを実装する際には、Webサーバとしての機能はApacheが受け持つパターンが多…

[Node.js] expressで作るHTTPサーバ - 入門編 その1

※この記事は専門学校の講義用に作成されたものです Node.jsでHTTPサーバを作成します。 以前からNode.jsはサーバを作るための言語であるという誤解している方が結構いらっしゃるのですが、標準モジュールだけでも非常に気軽にHTTPサーバをポンッと作成して立…

[Node.js] Windows10にNode.jsをインストールする

諸般の事情により、Windows10にNode.jsをインストールする手順をまとめます。 とは言ってもインストーラーをダウンロードしたら、次へボタンを連打するだけで入ります。かんたん!

[AWS] Serverless FrameworkでRESTfulAPIを作成する (S3編)

今回はServerless FrameworkでRESTfulAPIを介しS3からデータを取得したり保存したりします。 DynamoDBの回と同様に、プロジェクトの設定ファイルであるserverless.ymlにCloud Formationの書式でS3の設定からIAM周りまで一元管理できます。分かってくると楽し…

[AWS] Serverless FrameworkでRESTfulAPIを作成する (DynamoDB編)

今回はServerless FrameworkでRESTfulAPIを介しDynamoDBを触ります。 プロジェクトの設定ファイルであるserverless.ymlにCloud Formationの書式でいろいろ定義できるのでテーブルの作成やIAM周りの設定もすべて一元管理できます。テキストファイルでほとんど…

[AWS] Serverless FrameworkでRESTfulAPIを作成する (外部サーバと通信編)

Lambdaから外部のサーバとHTTPによる通信を行ってみます。 とは言っても特別な制約はありませんので基本的に自由行うことができますが、実行時間によって課金される点に注意が必要です。相手方のサーバからレスポンスが中々返って来ないとその時間分だけ課金…

[AWS] Serverless FrameworkでRESTfulAPIを作成する (クエリー編)

AWSにServerless Frameworkを利用してRESTfulAPIを作成する際、クエリー文字列などの引数を取得する方法についてメモします。今回はAPI Gatewayのテンプレート関連の機能は使わず、Lambda側ですべて処理します。利用する言語はNode.jsです。

[Node.js] JSONをCSV形式でファイルに書き込む - csv-writer

小ネタです。 csv-writerモジュールを使うとJSON的なデータをCSV形式でかんたんに保存することができます。 // CSVにしたいデータ(オブジェクト) const data = [ {id:1, title:"吾輩は猫である", view:123}, {id:2, title:"坊っちゃん", view:456}, {id:3, t…

[JavaScript] 既存のオブジェクトにメソッドを追加する

小ネタです。 JavaScriptのグローバルオブジェクトには様々なメソッドが最初から用意されています。例えば文字列を扱うStringには、検索置換するreplace()や一部を取り出すslice()などです。ここに自分で用意したオレオレなメソッドを追加することができます…

[Node.js] JSONをキレイに整形して出力する

小ネタです。 結論から言うと、JSON.stringify()の第2引数にnull、第3引数に数値を指定することで人間がパッと見て分かるよう整形した文字列が返されます。 const data = [ { "season": "202004", "title": "乙女ゲームの破滅フラグしかない悪役令嬢に転生し…

[AWS] Serverless FrameworkでRESTfulAPIを作成する

AWSでRESTfulAPIをAPIGateway+Lambdaで作ろうとすると、ブラウザ上でGUIをいじくるわけですが操作感が独特で慣れるまでちょっとばかし辛いものがあります。そんな時に活躍してくれるのが「Serverless Framework」。YAMLをチョロっと書くだけでそのあたりの設…

NeDBのデータファイルをCLIから操作する

Node.jsなどからローカルファイルを簡易的なデータベースとして利用できるNeDBですが、ちょっとデータを編集するのに毎回コードを書くのも面倒。そこでCLIから利用できる「nedb-repl」を使うと非常に楽ちんに操作できます。 github.com

はじめてのSocket.io #2 チャット編「自分がemitした通信内容か判定する」

前回作成したチャットに機能追加を行います。今回はユーザー名の入力に対応しつつ、Socket.ioサーバから送られてきた内容が自分自身が送ったものかを判定する機能を追加していきます。 次のデモ動画の通り最初に名前を入力、自分自身が発言すると文字色が青…

はじめてのSocket.io #1 「リアルタイムなチャットを作る」

Node.jsのキラーソフトの一つとも言われて久しいSocket.ioを使ってリアルタイム通信を行います。コツさえ分かれば非常に簡単に開発できてしまうのでプロトタイプや小規模なプロジェクトにオススメ。 今回は以下の動画のように複数のクライアント間でリアルタ…

[Firebase] Functionsで環境変数を参照/設定する

Firebaseでの「環境変数」は、OSなどから提供される情報が得られる物と、Firebaseが独自に提供する2種類の機能があります。前者が他の環境でも一般的に環境変数と呼ばれる物ですね。 ここではそれぞれの利用方法を見ていきます。

[Node.js] Promise版requestでHTTP通信を行う - request-promise-native

前回は非同期なrequestモジュールを利用してHTTP通信を行いましたが、今回は同期処理が行えるrequest-promise-nativeを使っていきます。Promiseが使えます!

[Node.js] HTTP通信を行い外部サーバのファイルを取得する - request

Node.jsで外部とHTTPで通信を行います。 標準モジュールでも頑張ればもちろん可能ですが、ちょっと大変なので今回はrequestモジュールを利用してサクッと作ります。もちろん外部サーバからファイルを取得する以外にも、RESTful APIを利用するなどHTTPの上で…

Cloud Translation API で HTMLをまるごと翻訳

前回はGoogleのCloud Translation APIの基本的な利用方法をまとめましたが、このAPIは一般的な文章だけではなく、HTMLを渡すと良い感じに翻訳してくれる機能が備わっています。 今回はHTMLを渡したときの挙動について調べてみたいと思います。

GoogleのCloud Translation API v3を触ってみる

自然言語の翻訳APIに興味が出てきたのでちょっと触ってみることにします。ここではすでにテキスト情報になっており、日本語から英語など別の言語に自動的に変換してくれる物を想定しています。 Google Cloud Translateサイトより すでに様々なサービスが世に…

[AWS] Node.js版 aws-sdkを設定する

Node.jsからAWSの様々なサービスを利用できるaws-sdkを使ってみます。 今回はインストールから利用開始できるまでの設定を行います。 AWS上の操作は大丈夫という方は、「Nodeから利用する」の項目からご覧ください。

[Firebase] CloudFunctionsのRESTful APIを独自ドメインで利用する

小ネタです。 FirebaseでCloudFunctionsを利用してRESTful APIを作成していると、通常はhttps://[Region]-[ProjectID].cloudfunctions.net/[関数名]といったURLになるわけですが、これを独自ドメインで運用したい、またはパスを変更したい場合の設定方法です…

[Node.js] ファイルに書き込む様々な方法

Node.jsでは、ファイルにデータを書き込む様々な方法が用意されています。今回はよく使われる方法についてまとめてみます。