JavaScript関連のことを調べてみた

JavaScript関連のことを調べてみた
目次

returnは関数の出口です!

https://x.com/sho_owarai/status/1856953236642738397

元記事を表示

論理演算子の基本

https://x.com/sho_owarai/status/1856965549420679366

元記事を表示

VFを呼び出すカスタムボタンをLEXでも使えるようにする(リストボタン編)

長年Classic環境で運用されていた、VFページを呼び出す処理を実装したJavaScriptカスタムボタン。


![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1336848/e1f73349-08ee-99b2-b80b-ad4550b2c152.png)

これをLightning Experience環境でも使えるようにしたい
(LEXではJSが使用不可のため、作り直しが必要となる)

方針としては、既存のVFページやコントローラクラスに手を入れる必要はなく
JS内で設定しているURLにリンクを飛ばせればよい。今回は画面フローで実装することにする。
※URLパスおよびパラメータ(SFIDをカンマ区切りで連結)を設定する

Classicではカスタムボタンを押した瞬間にVFを開くが、
LEXでは画面内に表示したリンクをクリックすることでVFに遷移する。
操作がワンクッション増えてしまうが、ベストな実現方法が思いつかなかったので
他に良いやり方があれば教えてください。

①フロー

元記事を表示

freee会計のファイルボックスのファイル詳細画面にショートカットキーを実装し入力を楽にしてみた

# これは何?
いつも経理にfreee会計を使っています。どうもfreee会計にはショートカットキーがなさすぎてマウスでの操作が多く、特に証憑から入力する経理作業に時間がかかっていました。
そこで「ショートカットキーが無ければ作ればいいじゃない!」の精神で実装してみました。

# 実装
使うのは[Shortkeys (Custom Keyboard Shortcuts)](https://chromewebstore.google.com/detail/shortkeys-custom-keyboard/logpjaacgmcbpdkdchjiaagddngobkck)というChrome拡張機能です。あるサイトにおいて任意のキーが押されたときに任意のJavascriptを走らせることができるので、これを使います。freee会計はdata-testid属性などが付けられていてとても要素を取り出しやすい✨
なお、この拡張機能のコメント欄に拡張機能が動かないという書き込みがありますが、以下を行うことで動作することを確認しています。

1. 拡張機能の設定変更後は保存する
1. 拡張機能の設定

元記事を表示

[ScriptAPI参考書] 基本的な扱い #3

# 目次

元記事を表示

vscodeでのTypeScriptのライブラリ開発とかでJSから参照するとき型を表示させる方法

今回は発見したライフハックを紹介します。
前提として、Visual studio codeに以下拡張機能を入れてください。

https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-typescript-next

## TL;DR
TSで作ったライブラリを外部からJSで参照するときは`index.js`と`index.ts`を用意すると型補完(?)ができる

## フォルダ構成
“`
dist
– bundle.js
src
– index.ts
– …

“`
このような構成のライブラリとかを他フォルダから参照する場合はフォルダ配下に以下を追加します。
“`
index.ts
index.js
“`
そしてその内容を以下にします。
“`js:index.js
export * from “./dist/bundle.js”
“`
“`ts:index.ts
export * from “./src/index.ts”
“`
## 何をしたか
拡張子以外同じJS/TSで同じ内容

元記事を表示

Apexクラスを呼び出すカスタムボタンをLEXでも使えるようにする(詳細ページボタン編)

長年Classic環境で運用されていた、Apexクラスを呼び出す処理を実装したJavaScriptカスタムボタン。

※参考URL:[tyoshikawa1106のブログ – SFDC:カスタムボタンからApexを呼び出す方法](https://tyoshikawa1106.hatenablog.com/entry/2016/10/16/204736)

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1336848/645bb5ef-ba6a-a6a2-ac67-af5b1e6adf31.png)

これをLightning Experience環境でも使えるようにしたい!
(LEXではJSが使用できないため、作り直しが必要)

①Apexクラスを修正
呼び出したいクラスのアクセス就職子がglobalになっていなかったらそのように修正。
呼び出したいメソッドに@InvocableMethodアノテーションを追記。(フローから呼び出せるようにする)
![6.png](https://qii

元記事を表示

【個人開発】旅行予定管理アプリ爆速で作ってみた【React】

## 「旅ジョーズ」というサービスをリリースしました。

![tabi3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/b9af5ac1-417f-df65-b6a3-b6a3fc300aae.gif)

以下にサービスを公開しています。

https://ryomeblog.github.io/tabi-jaws/

:::note warn
※ 個人開発したアプリなので使用する際は自己責任でお願いします。
:::

## GitHub

以下にソースコードを公開しています。

https://github.com/ryomeblog/tabi-jaws

## 旅ジョーズというサービスについて

### はじめに

なぜこのようなアプリを作ったかというと、、、

かなり前になりますが、「行程さん」というWebサービスがサ終してしまい、似たようなサービスがないか探していたのですが見つからず、、、

類似サービスがまったくないわけではなかったのですが、「**広告がストレス**」、「**ユー

元記事を表示

flatMapで遊ぶFizzBuzz 「すべてがFになる」

前回は flatMap がどんなものなのかという基礎の部分を考えたね。

#### 前回記事

https://qiita.com/KentaroMorishita/items/e4ecbfdd14b15a501547#array%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Ffizzbuzz%E3%81%AE%E5%AE%9F%E8%A3%85

今回は、flatMap と前回作った`Box`を活用して、処理のサンプルとしてちょうど良い FizzBuzz の実装をしてみようか。

## FizzBuzzって?

知らない人はそんなにいないと思うけど、

https://wa3.i-3-i.info/word18535.html

こういうやつです。

## `Box`型のおさらい

まず、基本の`Box`型をおさらいしておくよ。前回作った`Box`は、次のように定義した。

“`typescript
type Box = {
map: (fn: (value: T) => U) => Box
flatMap: (fn: (v

ブラウザで表示されているリンク取得

ブラウザで表示されているリンク取得

// すべてのリンクの href 属性を取得してコンソールに表示する
const links = Array.from(document.querySelectorAll(‘a’));
const hrefs = links.map(link => link.href).filter(href => href);

// すべてのリンクをコンソールに出力
console.log(“リンク一覧:”);
hrefs.forEach(href => console.log(href));

// クリップボードにコピー
const textToCopy = hrefs.join(‘\n’);
navigator.clipboard.writeText(textToCopy)
.then(() => console.log(“すべてのリンクがクリップボードにコピーされました。”))
.catch(err => console.error(“コピーに失敗しました: “, err));

【JavaScript】Reflectについて

今回は【JavaScript】Reflectについての備忘録です。

## 1: Reflectとは?
・Reflectとは、「JSエンジン内部の汎用的な関数」に直接アクセスできるオブジェクトのこと。

## 2:「Reflect」をもう少し詳しく
⬇︎
◾︎JSエンジンでは内部でのみ使用される「内部メソッド」というものを保持している。
[[Get]]
[[Set]]
[[Delete]]
[[Construct]]

⭕️◾︎「Reflect」によってこの「内部メソッド」を間接的に呼び出すことができる。
get
set
deleteProperty
construct

## 3:Reflectを使用する目的は、主に2つ。
⬇︎
①「内部メソッドを、Reflectに格納していく」ことによって【Reflectを通して内部メソッドにアクセスするという目的。】

②「Proxyと合わせて使用する目的。」

主に以上の2点です。

## 4:実際に【Reflectを通して内部メソッドにアクセスしてみよう。】

__実践1__: 下記のようにn

アプリの機能に悩むあなたに

個人開発でアプリを作成するときに基本意識するのはCRUD
ここに関しては多くの人が認識済みかもしれませんが、

個人開発でアプリ作成時の機能に関して、
**「自分の得意分野から」攻めたほうが良い**と考えます
同時に
**相手の得意分野は避けたほうがいい**と考えます

何言っているかわからないかもしれませんが、
以前テレビで見てたあたしンちのエピソードにヒントがあります

あなたが開発するアプリをプレゼントと例えてみてください

それは「相手によろこんでもらえるかどうか分からない」という不安にもなります

コーヒー好きな人に下手なコーヒー贈ると、
**ああこれね**
その人のほうが、あなたより舌が肥えていたらそのような反応が返ってくるリスクがあります

同じように、ついアプリ作成時に高度な技術を付けないとで加点法形式で「あの人は、○○が好きだから」という根拠を求めてしまいます

少なくとも「あの人はきっとLINEが好きだから」でプラス1点(だからLINE通知を実装しました)
少なくとも「みんな、おすすめを求めている」でプラス1点(だからレコメンドを実装しました)

そのプラスが、なん

【JavaScript】Proxyについて

今回は【JavaScript】のProxyについての備忘録です。

## 1: Proxyとは?
・「Proxy」とは、【プロパティの操作に、独自の処理を追加する】ためのオブジェクトです。これによりオブジェクト自体の操作に介入したり操作したりすることができます。

## 2:「Proxyの独自の処理」って?
・例えばProxyが発生したら「トラップ」というものを発動して、独自の処理を追加するということができます。

■トラップの独自の処理の例
・例として「setトラップ」を解説。
targetObj
handler
new Proxy
という各オブジェクトを使って、どの操作に介入するか、また介入された操作をどのように再定義するかを定義するオブジェクトです。

■set: function (target, prop, value, receiver)の引数の意味。

・第一引数のtarget ➡︎「Proxyの第一引数で渡したオブジェクトtargetObjのこと。」

・第二引数のprop ➡︎「プロパティにアクセスされた際の、プロパティの名前(プロパティ

[JavaScript][L3] ボタン押下によりコンテンツ(div>ul>li)を別コンテンツ(div>ul>li)に移動する

# 実施条件
[[JavaScript][L2] ボタン押下により中コンテンツ(ul)内の小コンテンツ(li)を削除する](https://qiita.com/Jochun/items/c79fa73fb224d52897c0)を理解していること

# 環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0

# ソースコード外観

## HTML
~~~html:index.html



TODO(JS)


【JavaScript】文字列から基本多言語面(BMP)以外の文字(UTF-8で4バイトになる文字)を配列で返す

“`typescript
// 基本多言語面(BMP)以外の文字を配列で返す
export const extractUnicode4ByteChars = (v: string) => {
const regex = /[\u{10000}-\u{10FFFF}]/gu // BMP範囲以外
return v.match(regex) || []
}

const text = ‘メッせ-z1𩸽✋☀️🥺’
console.log(extractUnicode4ByteChars(text))
// ‘𩸽🥺’
“`

[JavaScript][L2] ボタン押下によりコンテンツ(div>ul>li)を削除する

# 実施条件
[[JavaScript][L1] テキストボックスのコンテンツ(div)から別のコンテンツ(div)に転記する](https://qiita.com/Jochun/items/632babb3bd0e3710920b)を理解していること

# 環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0

# ソースコード外観

## HTML
~~~html:index.html



ToDo(JS)


ilasmでstack machine その45

# 概要
ilasmでstack machineやってみた。
練習問題やってみた。

# 練習問題
ilasmをrom化せよ。
数9を四個使って、1から15まで求めよ。

# 写真

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/a2139dcc-0487-aad8-2113-c5ba697ed70e.png)

# サンプルコード

“`

var out = document.getElementById(“out”);
var src = document.getElementById(“src”);

function hexs(val) {
var v = val.charCodeAt(0);
var w = v.toString(16);
w = “0000” + w;
code = w.substring(w.length – 2, w.length);
return code
}
function hex(val) {
var

cursorでwebサイト作成をしてみた

cursorのダウンロード

↓以下のリンクからダウンロードできます。

https://www.cursor.com/

AIは無料で3週間ほど使えたと思います。

cursorの使い方

cursorはVisiual Studio Codeとほとんど同じで、AIを使って簡単にコーディングをするかしないかの差だと思います。

cursorのAIは赤い矢印がさしているボタンをを押すことで、右にチャットとして表れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810719/9b1dc295-f3c8-e118-5e1f-d1376cbcfad9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3810719/79fede88-4ff7-7f0a-41b4-01c52f4b1848.png)

webサイトの作成

私は、以

テキストアニメーションできるライブラリ「textillate.js」の使い方・カスタマイズ

## はじめに

textillate.jsは、テキストに簡単にアニメーション効果を追加できるjQueryプラグインです。文字単位でのフェードインやスライドインなど、様々なアニメーション効果を実現できます。この記事では、textillate.jsの基本的な使い方からカスタマイズ方法まで詳しく解説します。

## 導入方法

textillate.jsを使用するには、以下のライブラリを読み込む必要があります:

“`html






“`

javascript

学習備忘録
自力で作ると理解度UP

“`aa.js
let maximum = parseInt(prompt(‘始めに0以外の数字を入力せよ’));
while (isNaN(maximum) || maximum <= 0) { maximum = parseInt(prompt('有効な数字を入力せよ')); } const targetNum = Math.floor(Math.random() * maximum) +1; let answerNum = prompt('答えの数字を決めました。予想して0以外の数字を入力せよ'); let count = 1; while (parseInt(answerNum) !== targetNum) { if (answerNum === 'q') break; if (isNaN(answerNum) || answerNum <= 0) { answerNum = prompt('0以外の有効な数字を入力せよ'); conti