JavaScript関連のことを調べてみた2022年11月08日

JavaScript関連のことを調べてみた2022年11月08日
目次

関数は変数である – Good Concepts in Programming –

# 概要
プログラミングの良い概念を理解するとプログラマーレベルが上がると考えています。
良い概念は特定のプログラミング言語に縛られないので、様々なプログラミング言語で役に立ちます。
前回は[良いコードは良い名前から生まれる](https://qiita.com/masaki_nakada_ari/items/d5fd8df6f515debf00fa)を紹介しました。
今回紹介する良い概念は「関数は変数である」です。

本記事のタイトルを見て「ちょっと何言ってるかわからない」と感じた方はぜひ最後まで読んでほしいです。
関数の見え方、使い方が劇的に変わります。

# 第一級関数
あまり聞き慣れない用語ですが、第一級関数は関数がその他の変数と同様に扱われることを表します。
JavaScriptで関数を宣言するサンプルコードを見てみましょう。

## 関数宣言(functionオブジェクト)
足し算をする関数(add)を宣言してみましょう。

“` function_add.js
function add(a, b) {
return a + b;
}

add(100, 23);

元記事を表示

JavaScriptから使いやすいWebAPIをRPCでお手軽に

JavaScriptから使いやすいWebAPIを考える回。
WebAPIといえばRESTが有名ですが、今回はRPCを実装してみます。

## 基本的な使い方

“rpc.js“はローカル関数を実行するような感覚で、サーバ側の関数を実行できます。

“`js:基本的な使い方
import API from ‘./rpc.js’

const result = await API.plus(1, 2) // 関数名plusと引数[1,2]が送信される
“`

ここでplusメソッドは幻で、定義はありません。
裏で**関数名**と**引数**がHTTP送信されて、サーバ側で同名の関数が実行され、結果が返ってくる仕組み。

基本的にGET送信ですが、**関数名の最初が大文字**の場合はPOST送信になります。

“`js:POST送信
const result = await API.Save(data) // POST送信
“`

以上がJavaScriptからWebAPIにアクセスする最善の書き方だと思います。
サーバ側も関数定義+αで済むので、全体を通してシンプルで分かり

元記事を表示

javascriptを基本から ① ボタンクリック時、何かjavascript(alert()メソッド)を実行する

初めまして。Junです。
猫のような気分屋な時があるのに、真面目にコーディングのノートを書いたりしています。根っこは真面目なんだろな・・多分・・。

まぁ、今回は、javascriptの復習をしながら、プログラミングノート的なものを、Qiitaに載せていこうかなと思います。

初めてで、拙いところたくさんあると思いますが、ご了承いただけましたら幸いです。

では、この記事の発想がどこから来たかというと、
– – –
「実装したい機能」→「完成形のコードが思いつき、書ける。」
– – –

を目標に、たくさんのノートを作っていくことで、実力アップを目指して、この記事を書きました。
今回、初めて取り組みたい機能は、下記の

– – –

ボタンをクリックした時に、alert()メソッドが実行される。

– – –

です。

下のGIFが結果の画面です。
![click.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217654/003a69da-98fd-c0e3-ffcc-48d0623ae438.g

元記事を表示

【Next.js】React-Hook-FormとSSGformを使ったお問い合わせフォーム作成【フォーム送信】

はじめに

Next.jsで作成中のポートフォリオにお問い合わせフォームを設置したいと考え、
色々試行錯誤しながらなんとか原型が出来たので備忘録がてらここに書き記す。

使ったパッケージ等

  • “react-hook-form”: “^7.39.1”
  • “yup”: “^0.32.11”
  • “@hookform/resolvers”: “^2.9.10”
  • SSGform

SSGform

フォーム送信よりも先にバリデーションを実装してしまい、その後にフォーム送信機能を作成しようとして詰まった。
サーバーレスで簡単に実装出来るフォーム送信ライブラリを探していたところ、ヒットしたのがこちらの

[SSGform](https://ssgform.com/)と言うサービス。
無料会員登録さえ行えばJSX内のformやinputにちょろっと記載するだけでフォーム機能を実装できる優れもの。

コード例
“`html

【Webpack】デプロイ後に発見したJavaScript難読化の落とし穴

# はじめに
この間、Webサービスの追加機能デプロイ時に **「[uglifyjs-webpack-plugin](https://www.npmjs.com/package/uglifyjs-webpack-plugin)」** というNode.jsのライブラリを使ってJavaScriptの難読化を行なったところ不具合が発生しました。
しかし原因はライブラリでもバージョンのズレなどでもなく、「ソースコードの難読化」自体にありました。
この記事では、**「JavaScriptの難読化」** に潜む落とし穴とその対策についてお話しします。
私自身考えもしなかった落とし穴でしたので、皆様もぜひ参考にしてください。

# ソースコードの難読化とは
[なぜ、JavaScript を難読化する必要があるのか?](https://www.agtech.co.jp/blog/2021/12/need-for-obfuscation)
こちらの記事がとても参考になりますので、分からない方はご一読ください。

ソースコードの難読化とは、**処理内容を変えず、とにかく読みづらくすること**です。
言って

元記事を表示

【MapLibre GL JS】ラスタータイルを表示する

## はじめに
この記事は#30DayMapChallenge2022 7日目の記事です。
テーマはRasterです。
MapLibre GL JSを使ってラスタータイルを表示してみます。

![image](https://raw.githubusercontent.com/tjukanovt/30DayMapChallenge/main/images/flyers/30dmc-2022.png)

https://30daymapchallenge.com/

## タイルとは
タイル状の地図データのこと
ズームレベルを大きくするとタイルの数が増える

地図の配信配信方式には、XYZ方式とWMSがあり、XYZ方式がデファクトスタンダードになっている
– あらかじめタイル状に分割したデータを配信する方式(XYZ方式)
![image](https://maps.gsi.go.jp/help/image/method_tile.png)

– 地図表示のリクエストがある度にその範囲をサーバ側で切り抜いて配信する方式(WMS:Web Map Service)
![image](https

元記事を表示

GeoJSON を力技で PowerPoint へ取り込む

## はじめに

ときどき、地図データを PowerPoint へ取り込みたくなることがあります。他の GIS ソフトウェア等で作成したデータを画像として取り込むことが多いと思いますが、PowerPoint 上で編集するという需要もあるかもしれません。

今回は技術的な興味として、GeoJSON ファイルを PowerPoint 上で編集できる形で取り込む方法について考えてみます。こだわるとキリがなさそうなので、今回は、**ラインデータとポリゴンデータを、PowerPoint へ「線」として取り込む**ことにします。

:::note warn
正確には、PowerPoint はソフトウェアの名前ですが、PowerPoint ソフトウェアで利用するプレゼンテーション用ファイルもひっくるめて「PowerPoint」と呼ぶことにします。
:::

## PowerPoint の中身

知る人は知る情報だと思いますが、PowerPoint に限らず、Word や Excel 用のファイルは、実態は zip 形式で、複数の XML ファイルを中心に構成ファイル一式を圧縮したものです。拡張子(p

元記事を表示

初めての投稿

プログラミング初心者です。
本とサイトを使ってJavascriptを独学で学習中
来年春から四年制IT専門学校に入学予定

元記事を表示

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript 重みあり有向グラフの隣接行列と隣接リスト

重みあり有向グラフの隣接行列と隣接リスト (paizaランク B 相当)

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_graph_step4

# 解答例
隣接リストを作成する際、重みkを()の中に入れ、配列にします。
“`javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);
//頂点の数 N と、辺の数 M
const [N, M] = lines[0].split(” “).map(Number);
//隣接行列g
let g = Array(N).fill(0).map(v => v = Array(N).fill(0));
//隣接リストh
let h = Array(N).fill(0).map(v => v = []);

for (let i = 1; i <= M; i++)

元記事を表示

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript 有向グラフの隣接行列と隣接リスト

有向グラフの隣接行列と隣接リスト (paizaランク B 相当)

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_graph_step3

# 解答例

隣接行列と隣接リストをそれぞれ作成して、出力します。

“`javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);
//頂点の数 N と、辺の数 M
const [N, M] = lines[0].split(” “).map(Number);
//隣接行列g
let g = Array(N).fill(0).map(v => v = Array(N).fill(0));
//隣接リストh
let h = Array(N).fill(0).map(v => v = []);

for (let i = 1; i <= M; i++) {

元記事を表示

ゼロパディング

# ゼロパディング

__概要__

ゼロパディングとは、画面や帳票などで数値を表現する際、書式で指定した桁数に満たない部分をゼロで埋めることである。

ゼロパディングの「パディング」には埋める、詰め物をするといった意味がある。

ゼロパディングは、例えば「123」を5桁で表す場合、2桁足りない部分をゼロで埋めて「00123」と表記する。もともと5桁の数であればゼロを埋めるスペースがないのでそのままの数を表記する。

[ゼロパディング](http://www.weblio.jp/content/%E3%82%BC%E3%83%AD%E3%83%91%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)

### スクリプト

__padStart使用の場合__
“` js
const str1 = ‘5’;

console.log(str1.padStart(5, ‘0’));

// 5桁になるように0で埋める
// 00005
“`

__slice使用の場合__
“` js
var num = 5;
console.log((‘00000’ + 5)

元記事を表示

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript 隣接リスト

隣接リスト (paizaランク B 相当)

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_graph_step2

# 解答例
問題文に沿って実装します。ソートをすることを覚えておいてください。
“`javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);

//頂点の数 N と、辺の数 M
const [N, M] = lines[0].split(” “).map(Number);

//隣接リストh
//準備
let h = [];
for (let i = 1; i <= N; i++) { h.push([]); } for (let i = 1; i <= M; i++) { const [a, b] = lines[i].split(" ").map(Number);

元記事を表示

ES Lint がJSのimportを勝手に削除するのを止める方法

## 症状
Nuxtのpluginsを利用し、
“`
import {foo} from foofoo;
// 保存すると、import from foofoo; になってしまう
“`
と記述しても、ESLintの不要なimportを自動削除(整形)するオプションがONになっていると消されてしまいます。

普段は良いのですが、pluginのようにimport関連だけ記述しておきたいような場合には非常に邪魔で、保存できなくなります。

## 解決方法
VSCodeの拡張機能のESLintの設定を変更します。
ESLintのsettings.json内に
“`
“editor.codeActionsOnSave”
“`
という項目があるはずです。

そこで
“`
“source.organizeImports”: false,
“`
と記述し、importの整形をオフにします。

これで完了です。

元記事を表示

paizaラーニング レベルアップ問題集 Aランクレベルアップメニュー JavaScript 隣接行列

隣接行列 (paizaランク B 相当)

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_graph_step1

# 解答例
問題文に沿って実装します。
“`javascript
const fs = require(“fs”);
const input = fs.readFileSync(“/dev/stdin”, “utf-8”).trim();
const lines = input.split(“\n”);
//頂点の数 N と、辺の数 M
const [N, M] = lines[0].split(” “).map(Number);

//隣接行列
//初期化
let g = [];
for (let i = 0; i < N; i++) { g.push(Array(N).fill(0)); } for (let i = 1; i <= M; i++) { //各辺の両端の頂点 a_i , b_i const [a, b] = lines[i].split(" "

元記事を表示

【JavaScript】同一オリジン間ではwindow.postMessage()ではなくBroadcastChannelを使う

ブラウザのウィンドウ間でメッセージをやりとりする方法は`window.postMessage()`を使う方法が有名ですが、もう一つ`BroadcastChannel`というものを使った方法もあります。二者の特徴をまとめたのが以下です。

– `window.postMessage()`
– 異なるオリジン間でメッセージの送受信が可能
– 送信相手のwindowへの参照が必要
– `BroadcastChannel`
– 同一オリジン間でしかメッセージの送受信ができない
– 送信相手への参照が必要がない

ということで同一オリジンのウィンドウ間のメッセージのやりとりは`BroadcastChannel`を使うべきです。他のサイトはメッセージを受信することができないのでセキュリティ的に好ましいですし、開発者としても送信相手へのwindow参照を持つ必要がなく実装が単純になります。逆にオリジンを跨ぐ場合は`window.postMessage()`を使うしかないということになります。

ちなみに`BroadcastChannel`は主要なブラウザ全てでサポート

元記事を表示

【未経験・独学】アパレル卸売ECモールアプリの開発 / マルチログイン【PHP/Laravel/JavaScript/Vue】

# はじめに

独学でポートフォリオを作成しました。(Laravel/Vue.js)
github:https://github.com/ShintaroKurata/job-board

本記事では、学習したことを振り返ります。
## 自己紹介

25歳
学習期間:2022年6月〜9月
前職:営業→Webディレクター
## アプリについて
### 概要
今回、PHP(Laravel)のポートフォリオとしてマルチログインで実装されるECモールを作リました。
実際には購入機能はないので、カート機能までの実装です。
### サービス画面
#### バイヤーダッシュボード
![buyer-dashboard-sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255872/9cde288a-b44c-644a-9e9a-7285aa9b7809.png)
バイヤーはこの画面から、自分のプロフィールなどを更新できます。

#### バイヤープロフィール
![buyer-profile-sample.p

元記事を表示

JavaScriptをもうちょっと理解する54のトピック

## この記事について

JavaScriptはお好きですか?

Reactなどフロンドエンドを中心に人気の言語なので、触ってる人はたくさんいると思います。
奥深くて自分も好きな言語ですが、結構なんとなくで触っていたりしませんか?

今回は自分が後輩によく聞かれた事や、自分が引っかかった事をたくさん書いていきます。
つまり基本的には初心者向け、よくても中級者向けです。
何か一個でも知らない事があれば御の字のつもりで書いたので、ぜひ気軽に読んでください!

## JavaScript編

### 略称はJS、Javaダメぜったい

いなさそうなのに稀にいるという・・
Web開発から入ってプログラムを広く知らない場合に発生しやすい?
Javaは全く別に王者がいるので、万が一使っていたららやめましょう。
略称は __JS(じぇーえす)__ でお願いします。

### データ型、Object

Objectはキーと値をいくつも持てるJSのデータ型です。
JSにはStringやDate、Functionなど多くのデータ型がありますが、ほとんどのオブジェクトはObjectを継承しています。

最初

元記事を表示

こんな形の日記、、、知らない

Webアプリを作りたい!
——————–
せっかくなら以前作ったNASAのAPIのLINEBotでwebアプリを作りたい!
↓過去作

https://qiita.com/kminamicric/items/4cd1083b0898f7f99963

このLINEBotで得られた情報とその日の自分の記録がをまとめられるサイトを作りたい。

**(未)完成品**
———-
LINEBotの情報に加えその日の出来事を記録できるサイトを作りたかった。
しかし時間の都合上ここまでしかできなかった。

https://fabulous-douhua-583802.netlify.app/

**ソースコード**
—————-

YellowfinでHighchartsのワードクラウドを描画する

# はじめに

### 概要
BIツールであるYellowfinは、JavaScriptライブラリを利用することで標準機能以外の様々なグラフや図を表現することが可能です。
今回はHighchartsを利用し、ワードクラウドを描画してみます。

### ワードクラウドとは
各文字列に紐づけられた数値の重みに応じて文字の大小を表現した図です。
例えば、「文章を単語レベルに分解した上で出現頻度を重み付けし、出現頻度が高い単語を大きく表示する」ケース等で利用されます。

https://www.highcharts.com/demo/wordcloud

### バージョン情報
Yellowfin:9.7.0.3
Highcharts:10.2.0

# 事前準備

### 1. YellowfinのJavaScriptグラフ機能

元記事を表示

芸術は爆発だ!私の頭もだ!やり場のない怒りを芸術の域に昇華させるアプリです。「なんで忘れるかなぁ俺の格言。それならつくる!《企画編➁》」

## 「なんで忘れるかなぁ俺の格言。それならつくる!《企画編➁》」のはずが・・・
趣味の競馬で負けた時に作った勝負事の格言、これが全く活かされていないことを解決するために格言DBを構築して、スマホやPCから登録・検索、週末に向けて格言適用レースの自動配信と機能を考えたのが《企画編①》でした。
    [NOTE記事:なんで忘れるかなぁ俺の格言。それならつくる!《企画編①》](https://note.com/xedge748hagi/n/n1352db87dae7)
最近は便利な開発環境やアプリがいろいろあって、組み合わせればWEBアプリが簡単にできてしまう、なんてことは全くもってございませんでした。無料サンプルコードはいろいろありますが、ちょっと直すと動かなくなるんです。原因を調べようにもいろいろ出てきてどれが正解か判断つかないんです。イライラしながらも粘り強くソースコードと格闘しているときにそれは起こりました・・・。

## 15時34分の悲劇
もう15時過ぎてるやん、はよせなアルゼンチン共和国杯(東京芝2500m、GⅡ)間に合わへん。東スポを開いて馬選びに入ります。・・・(時間経

元記事を表示

OTHERカテゴリの最新記事