X



+ JavaScript の質問用スレッド vol.126 + [転載禁止]©2ch.net

0001Name_Not_Found
垢版 |
2015/08/08(土) 12:43:43.71ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
0372Name_Not_Found
垢版 |
2023/03/31(金) 12:07:44.93ID:???
こんにちは。
どなたか教えていただけませんか。

下記のようなコードを書いたのですが、
div部分が1つなら問題ないのですが、複数になると2つ目以降は反映されません。
そこでループにしないといけないのかな?と思うのですが知識が未熟でどうすればいいのか全くわかりません。
どなたかどうすればいいか教えて頂けませんでしょうか。
よろしくお願いします。

// HTML
<div class="fullimg"><img src="./img1.jpg" height="1000" width="1000"></div>
<div class="fullimg"><img src="./img2.jpg" height="500" width="500"></div>

// script
let imgd = document.querySelector("img");
let result = imgd.getAttribute("src");

let hresult = imgd.getAttribute("height");
let wresult = imgd.getAttribute("width");

const div = document.getElementsByClassName("fullimg");
div[0].innerHTML = '<label for="' + result + '"><img src="' + result + '" height="' + hresult + '" width="' + wresult + '"></label>';
0373Name_Not_Found
垢版 |
2023/03/31(金) 13:50:56.44ID:???
ループ以前にlabelのfor属性は関連するフォーム要素のIDを指定するものなので生成しようとしてるhtml自体に問題があるよ
0374Name_Not_Found
垢版 |
2023/03/31(金) 14:25:37.98ID:???
では再度サンプルコードを書いておきます。

// HTML
<div class="fullimg"><img src="./img1.jpg" height="1000" width="1000"></div>
<div class="fullimg"><img src="./img2.jpg" height="500" width="500"></div>

// script
let imgd = document.querySelector("img");
let result = imgd.getAttribute("src");

let hresult = imgd.getAttribute("height");
let wresult = imgd.getAttribute("width");

const div = document.getElementsByClassName("fullimg");
div[0].innerHTML = '<img src="' + result + '" height="' + hresult + '" width="' + wresult '">';

こちらでどうぞよろしくお願いします。
0375Name_Not_Found
垢版 |
2023/03/31(金) 17:01:16.18ID:???
>>372
せめてループに挑戦してるけどうまく動かないから助けてってとこまではたどり着いてほしい気がするなぁ
初心者向けのループのレクチャーなんていくらでも見つかるわけだし
0376Name_Not_Found
垢版 |
2023/03/31(金) 22:42:19.54ID:???
>>375
どこかから拾ったサンプルコードの修正依頼で自分は全く知識がないのだろう
0377Name_Not_Found
垢版 |
2023/04/01(土) 12:28:09.62ID:???
これで音信不通になるようではな
諦めたか他所へマルチしに行ったか
0378Name_Not_Found
垢版 |
2023/04/01(土) 14:29:48.39ID:???
これは、取得した値をそのまま設定しているだけだから、何も変わらない

jQuery なら、

// fullimg クラスの付いたdiv の、直下のimg
$( 'div.fullimg > img' ).each( function ( index, elem ) {

jQ_this = $( this )
const src = jQ_this.attr( 'src' ) // 取得
const height = jQ_this.attr( 'height' )
const width = jQ_this.attr( 'width' )

console.log( `${ index }: ${ src }, h: ${ height }, w: ${ width }` )

jQ_this.attr( 'src', src ) // 設定
jQ_this.attr( 'height', height )
jQ_this.attr( 'width', width )

} )

ログ出力
0: ./img1.jpg, h: 1000, w: 1000
1: ./img2.jpg, h: 500, w: 500
0379Name_Not_Found
垢版 |
2023/04/01(土) 15:06:47.33ID:???
jQuery信者が喜ぶネタなんだな
0380Name_Not_Found
垢版 |
2023/04/03(月) 20:28:44.17ID:???
【環境】VS Code
バージョン: 1.77.0
Electron: 19.1.11
Chromium: 102.0.5005.196
Node.js: 16.14.2
V8: 10.2.154.26-electron.0
OS: Linux x64 5.4.0-42-generic

【何をしたのか】イベントリスナー内でevent.target.valueを参照した。
【エラーメッセージ】プロパティ 'value' は型 'EventTarget' に存在しません。ts(2339)
【サンプルコード】
(() => {
"use strict";
const fruit = document.querySelector('select');
if (null === fruit) { return; }
fruit.addEventListener('change', (event) => {
if (null === event.target) { return; }
console.log(event.target.value);
});
})();

fruit === event.targetを実行するとtrueが返ったので、event.target.valueをfruit.valueに書き換えたところエラーが消えた。
イベントを扱うサンプルコードでは大抵event.target.valueが利用されているが、HTMLSelectElement.valueで置換した場合に何か落とし穴はありますか。
0381Name_Not_Found
垢版 |
2023/04/03(月) 21:47:26.64ID:???
>>380
エラーが消えたからヨシ!は好ましくない
まずはts(2339)で検索してみよう
0382>>380
垢版 |
2023/04/03(月) 22:22:25.06ID:???
>>381
エディタ上でts(2339)が出ていてもブラウザ上での実行は問題なくできます。

キャストするとts(2339)が消えますが、「型アサーション式は TypeScript ファイルでのみ使用できます。ts(8016)」が発生します。
ブラウザで実行すると、「Uncaught SyntaxError: Unexpected identifier 'as' (at hoge.html:24:35)」が発生します。(TypeScriptの構文なので当然ですが……)

fruit === event.target;はtrueなので置き換えたのですが、トラップや問題はありますか。
(エディタ上のts(2339)も消えるし実行もできるので、落とし穴がなければこれで行きたいな、と)
0383Name_Not_Found
垢版 |
2023/04/03(月) 22:36:04.36ID:???
>>382
そもそもTypeScriptを書こうとしてるわけじゃないのになんでtsエラーが出てるの?ってこと
vscode右下の言語モードがTypeScriptになってるんじゃないの?
0384Name_Not_Found
垢版 |
2023/04/03(月) 23:01:10.11ID:???
>>383
なってないです。拡張機能も無効です。
i.imgur.com/TE6gwcY.jpg
0386Name_Not_Found
垢版 |
2023/04/03(月) 23:39:06.45ID:???
>>384
わかった、vscodeの設定に↓があるんじゃない?
"js/ts.implicitProjectConfig.checkJs": true
これ追加したらうちでもJSでエラー出た
0387>>380
垢版 |
2023/04/03(月) 23:48:50.00ID:???
>>385 >>380
原因が判明しました。"js/ts.implicitProjectConfig.checkJs"がtrueでした。
型のチェックはしたいので、event.target.valueの上に@ts-ignoreを書いて解決します。
ありがとうございました。
0388>>380
垢版 |
2023/04/03(月) 23:51:00.10ID:???
>>386
まさにそうでした。ありがとうございました。
0389Name_Not_Found
垢版 |
2023/04/04(火) 00:27:18.41ID:???
jQuery では、event.target.value でも、正常に動く

<div id="btn-wrap">
<button class="BtnA BtnAll" value="1">A-1</button>
<button class="BtnA BtnAll" value="2">A-2</button>
<button class="BtnB BtnAll" value="3">B-3</button>
</div>

<div id="btn-wrap-2">
<button class="BtnC BtnAll" value="11">C-11</button>
</div>

$( function ( ) {
// 外側・親に、イベントを付けて、親で、子のイベントをキャッチする
$( '#btn-wrap' ).on( 'click', function ( event ) {
const value = $( event.target ).prop( 'value' )
console.log( value )
alert( value )
} );

$( '#btn-wrap-2' ).on( 'click', function ( event ) {
console.log( event.target.value )
alert( event.target.value )
});
} );
0390Name_Not_Found
垢版 |
2023/04/04(火) 00:53:07.21ID:???
>>387
@ts-ignoreもなんか負けたみたいでいやだけども調べてみてもいい解決策はなさそう
致し方なしかな

>>389
正常に動くかどうかの話はしてないよ
よく読もう
0391Name_Not_Found
垢版 |
2023/04/04(火) 10:04:45.82ID:???
fruitがHTMLSelectElementなのは確定してるから
event.currentTargetがHTMLSelectElementであることは推定できそうだな
event.target じゃなくて event.currentTarget にしたらどうなるかね
0392Name_Not_Found
垢版 |
2023/04/04(火) 10:48:34.90ID:???
>>387
型チェック入れるとか
if (null === event.target || !(event.target instanceof HTMLSelectElement)) { return; }
キャストするとか
console.log(/** @type {HTMLSelectElement} */ (event.target).value);
0393Name_Not_Found
垢版 |
2023/04/04(火) 11:43:11.41ID:???
>>392
そのへん少し試したけどうまくいかなくて諦めてた
致し方なしとか言う前にもう少し手を尽くすべきだった
反省
0394>>380
垢版 |
2023/04/04(火) 19:16:22.79ID:???
>>391
currentTargetもts(2339)が発生します

>>392
元々、nullチェックは'event.target' は 'null' の可能性があります。ts(18047)のエラーを消すために入れていたのですが、
条件を!(event.target instanceof HTMLSelectElement)に書き換えてもts(18047)とts(2339)は発生しないので、解決しました。
JSDocコメントでのキャストは気づきませんでした、こちらが適している場面があればこちらも利用していきます。ありがとうございました。

>>390 >>393
そうなんです、@ts-ignoreを使用している行で他のエラーが出た時に気づけなくなるので、あまり使用したくないです。
遅い時間までお付き合いいただき、ありがとうございました。

ところで、event.targetの代わりにfruitを使用すべきではない明確な理由はないが、event.targetを使用するのが(通常|普通|無難)である。ということで合っていますか。
0395Name_Not_Found
垢版 |
2023/04/04(火) 22:54:34.70ID:???
1つのイベントハンドラが複数の要素に対して設定されることは一般的で、その場合はevent.targetを使うことになる
今回のケースはそうでないにしても、可搬性や拡張性を考えれば常にevent.targetを使用しておくという判断は妥当だろう
あと処理結果は同じでも、イベントの起こった要素に対して処理をする、という意図をコードに残す意味もある

いずれにしろ現時点のそのコードだけを考えるならお好きなように
0396>>380
垢版 |
2023/04/05(水) 00:34:18.58ID:???
>>395
確かに以下のような場合にはEvent.targetを使う必要があるし、「意図をコードに残す」にとても合点がいきました。
<button data-x="1">btn1</button>
<button data-x="2">btn2</button>
const btns = document.querySelectorAll('button');
for (const b of btns) {
b.addEventListener('click', e => console.log(e.target.dataset.x));
}
0397389
垢版 |
2023/04/05(水) 10:13:44.20ID:???
>>389
に書いた

複数のコントローラーに、イベント登録する場合、
外側・親に、イベントを付けて、親側で子のイベントをキャッチする
0398Name_Not_Found
垢版 |
2023/04/05(水) 11:14:44.19ID:???
このjQuery信者は文脈や論点ってものを全く理解しないのな
jQueryでは~jQueryなら~ってただただ念仏を唱えて布教に励む様子がまさに信者
0399Name_Not_Found
垢版 |
2023/04/05(水) 13:56:33.20ID:???
Slickで出来てSwiperでできないようなアニメーション処理って何かある?
0400Name_Not_Found
垢版 |
2023/04/06(木) 13:40:22.56ID:???
Mathjaxって配列環境でcolspan, rowspanって使えないのか?
\multicolumnというべきか
0401Name_Not_Found
垢版 |
2023/04/13(木) 11:04:39.61ID:08KgWRFK
JavaScript でローカルファイルを読み書きするにはどうすればいいでしょうか?
fetchという関数が使えるかと思ったんですが、blocked by CORS policy というエラーになってしまいます。
0402Name_Not_Found
垢版 |
2023/04/13(木) 14:00:39.10ID:???
CORS(Cross-Origin Resource Sharing)制限は、
ローカルPC 上に、何かのサーバーを立てて、そこから配信すれば良い

VSCode の拡張機能、open in browser では、
file:/// から始まるローカルファイル・アクセスだから、CORS制限あり
file:///C:/Users/Owner/Documents/test.htm

一方、Live Server では、サーバーを立てているから、CORSにならない
http://127.0.0.1:5500/test.htm

同様に、コマンドプロンプト・PowerShell から、
1-liner で、Ruby で作られた遅いウェブサーバー、WEBrick を起動すると、
ruby -run -e httpd . -p 8080

これも、サーバー経由だから、CORSにならない
http://localhost:8080/test.htm
0403Jun
垢版 |
2023/04/26(水) 01:05:22.69ID:2ly3VJ6h?2BP(0)

JavaScriptで電卓を作るよ。
0405Jun
垢版 |
2023/04/27(木) 23:52:36.98ID:qkYl27sL?2BP(0)

JavaScript + HTML + CSS で電卓やホームページを作るのが今の目標です。
0406Name_Not_Found
垢版 |
2023/05/09(火) 15:14:09.97ID:???
マイナーな質問

XyJaxで、一括して文字色を変える方法教えてくれ

\color{red}を使っても、その箇所だけしか変更できない。
\xymatrix環境内全部の文字色を変えたい
0408Name_Not_Found
垢版 |
2023/06/16(金) 12:40:56.37ID:???
こんにちは。
誰か教えてください。

<style>
.def { color: red;}
</style>

<div>
<p class="abc">aaa</p>
</div>
<div>
<p class="abc">bbb</p>
</div>

<script>
dif = document.querySelectorAll('.abc');
dif.forEach(element => document.querySelector("div").classList.add("def"));
</script>

このようなコードですが、実行すると1つめのaaaを囲ってるdivにしかclassが追加されません。
条件にあるすべてのdivに追加するにはどうすればいいのでしょうか?
0409Name_Not_Found
垢版 |
2023/06/16(金) 14:16:25.94ID:???
>>408
document.querySelectorAll('.abc').forEach(element => element.closest("div").classList.add('def'));
0410Name_Not_Found
垢版 |
2023/06/16(金) 14:24:00.49ID:???
>>409
レスありがとうございます。
closestなんてものがあるのですね。知りませんでした。
おかげで思うように行きました。
ありがとうございます。
0411Name_Not_Found
垢版 |
2023/06/16(金) 16:50:32.34ID:???
>>408
これでもいけると思う
document.querySelectorAll('div:has(> .abc)').forEach(x=>x.classList.add('def'));
0412Name_Not_Found
垢版 |
2023/06/16(金) 16:57:38.56ID:???
これでもいいのかな?間になにか挟まってたらダメだけど
('div >:is(.abc)')
0413Name_Not_Found
垢版 |
2023/06/16(金) 17:02:39.12ID:???
>>411,412
こちらもありがとうございます。
大変助かります。
0414Name_Not_Found
垢版 |
2023/07/14(金) 05:34:41.98ID:zlYPgrgm
https://jsfiddle.net/um71qgzf/3/
こんな表示状態で、textarea に入力して改行していき、表示可能行数を超えると、スクロール状態になります。
入力された行数に応じて textarea が縦に伸びて、textareaのコンテナにあたる li もそれに応じて縦に伸びるようにするにはどうすればいいのでしょうか?
0415Name_Not_Found
垢版 |
2023/07/14(金) 17:33:09.83ID:???
自前でやろうとせずにライブラリ探してきたら?
0416Name_Not_Found
垢版 |
2023/07/14(金) 17:53:03.06ID:???
textarea 高さ 自動
でググるとそれっぽいのあったよ
0417Name_Not_Found
垢版 |
2023/07/17(月) 03:34:14.72ID:???
SELECTタグで、人物を選択出来るようにしたいのですが、SELECTが非展開の時はIDだけ表示して、
展開した時だけ、IDと人物名が表示されるようにする方法を教えてください。

人物配列

var array =
[
{
"id": 1,
"name": "人物1"
},
{
"id": 2,
"name": "人物2"
}
]


こんな表示にしたいです。

https://i.imgur.com/WWwRHPV.jpg
0418Name_Not_Found
垢版 |
2023/07/17(月) 08:04:52.05ID:???
展開したときにどこにID表示されてるの?
0419Name_Not_Found
垢版 |
2023/07/17(月) 12:41:46.99ID:???
>>417
一応確認するが、非展開時に数字にする意図は何?
フォーム送信時に数字を送信したいだけなら、尊信値(value属性値)と表示する選択肢(子要素の文字列)を分けて書くだけで良いのだが
0422Name_Not_Found
垢版 |
2023/11/20(月) 22:52:12.45ID:???
何をしていいか分からないな…
0423Name_Not_Found
垢版 |
2023/12/12(火) 22:36:34.47ID:???
変数名はキャメルケース(getNameなど)がよく使われるようですが、
スネークケース(get_nameなど)はやはり使わない方がいいですか?
0424Name_Not_Found
垢版 |
2024/02/28(水) 02:36:50.61ID:pCYviIFS
https://liveweave.com/6IlWRJ

JavaScriptでスプリッターを作っているのですが、左右を分割するスプリッターをマウスで動かしても、マウスの位置とずれてしまいます。
どのように修正すればいいのでしょうか。
0425Name_Not_Found
垢版 |
2024/03/28(木) 04:02:18.18ID:???
>>423
良いか悪いかはさておき

考え方としては
そのコードを、どのくらいの範囲で共有するのか
ってのを基準に考えたらいいと思う

自分だけなら好きにすればいいし
身内だけなら話して決めればいいし
広範囲なら世間一般の流れに合わせるべき

みたいな
0426Name_Not_Found
垢版 |
2024/03/28(木) 04:07:49.72ID:???
>>417
すんごい前だけど
似たようなことを頑張ったことある

でもやっぱり
select要素が開いているかどうかを判定出来ないので
原理的に出来なくて

select要素のように振る舞うものを
手作りするのが早かったです
0427Name_Not_Found
垢版 |
2024/04/08(月) 00:13:34.85ID:???
今動作しているのがサーバ上(https//:~)なのかローカル(file:///C:~)なのか区別する必要性が出てきました。
locationで取得する以外にいい方法ありますか?
区別さえ確実にできれば得られる値は(true/falseなど)なんでもいいです。
0428Name_Not_Found
垢版 |
2024/04/08(月) 12:44:09.64ID:???
>>427
window.location.protocolを見れば良いんじゃないかな
httpかhttpsなら、みたいな
0429Name_Not_Found
垢版 |
2024/04/18(木) 13:55:10.68ID:NjgPbiyX
var people = [{
"id" : "ID1", "name" : "人物1", "room" : "1"
}{
"id" : "ID2", "name" : "人物2", "room" : "2"
}]

var select_tag = document.getELementById("my_select");

for ( var i = 0; i < people.length; i++ ) {
var option = document.createElement("option");
option.value = people[i].id;
option.innerText = people[i].name;
my_select.append(option);
}

こういう感じの select を設置して、option が選択された時に、選択された人物の room を取得するにはどうすればよいのでしょうか?
0430Name_Not_Found
垢版 |
2024/04/18(木) 17:45:29.04ID:???
>>429
select_tag.selectedIndexに
今選ばれてるoptionが何番目かが入ってるから

select_tagのchangeイベントにフックして
その数字を拾って、people[数字].idを参照したらいいよ
0431Name_Not_Found
垢版 |
2024/04/18(木) 17:53:34.56ID:???
ごめん間違えた
people[数字].roomだった
すまんこ
0432Name_Not_Found
垢版 |
2024/04/19(金) 02:15:05.41ID:???
>>431
出来ました!ありがとうございます!

select_tag.addEventListener("change", (e) =>{
let i = select_tag.selectedIndex;
alert(people[i].room);
});
0433Name_Not_Found
垢版 |
2024/05/07(火) 02:22:40.33ID:YeUeQCju
calleeという古語を使っていたが
怒られた
0435Name_Not_Found
垢版 |
2024/05/09(木) 18:11:07.56ID:???
今のJavascriptファイルの管理って、どれがスタンダードになっていますか?
webpackはだいぶ古いんですよね?
0436Name_Not_Found
垢版 |
2024/05/09(木) 20:40:41.69ID:???
>>435
そもそもwebpackは管理するものではないのだが…

バンドルツールのシェアのことなら
webpackがまだまだ支配的だと思う

viteとturbopackが頑張り始めたところだけど
この辺はJSだけの話ではなくなるので
なんとも言い難い感じ
0437Name_Not_Found
垢版 |
2024/05/09(木) 20:42:16.82ID:???
パッケージの管理のことなら
npm一択な気がする

ツール自体はyarnとかpnpmとか色々あるけど
0438Name_Not_Found
垢版 |
2024/05/10(金) 01:03:55.90ID:???
Ruby on Rails では、npm は遅いから、yarn を使う

Rails 7 からは脱webpack で、
Import Maps で、CDN から直接インポートする

HTTP/2 が普及して、バンドル・Node.js が不要になった。
バンドル不要のTailwind を使う

バンドルするなら、esbuild, rollup, webpack を使う。
esbuildならCSS プロセッサとして、Bootstrap を使う
0439435
垢版 |
2024/05/10(金) 08:14:30.07ID:???
>>436-438
バンドルツールのことです。
webpack→viteと学んでいるのですが、
正直複雑すぎてついていけてません・・・

特にviteでバンドルして生成されるファイル構成に
どうしても違和感があって、勉強を中断しています。
ChatGPTに聞くとviteのようにハッシュ値で変換した
ファイル名にすることでセキュリティが高まるそうですが、
元のファイル名から変わるのに違和感を覚えます
0440438
垢版 |
2024/05/11(土) 08:51:08.46ID:???
Vite は、Vue.js の作者だったか?
Vueも、Vue 3 で人気が無くなって、React 一色になった

2, 3年前は、Vueが転職で有利だったのに、
今は、React, TypeScript

ブラウザのキャッシュ対策として、
ファイル名はハッシュ値の方が良い

ファイルを更新するとハッシュ値も変わるから、
古いファイルがキャッシュされない

どうせ配布用のファイル名だから、開発用には関係ない
0441Name_Not_Found
垢版 |
2024/05/11(土) 17:41:41.54ID:???
Viteの書き出すファイル名はconfigで変更できたような
0442Name_Not_Found
垢版 |
2024/05/12(日) 01:16:53.68ID:???
>>439
元のファイル名がわかることに
どこまで意味があるのか?って話じゃね?

たとえばbabel+webpackだって
トランスパイル、パッキング後は
部分的にバイナリになったりするわけで
要するに人間の読めるものではなくなる

つまり、ファイル名がハッシュ化されなくても
人間が得られるものはせいぜい
そのファイルがなんなのかの想像がつきやすい
程度のこと

ファイル名が中身と全く関係ない
なんてこともよくあるとは言わんまでも
一定数わけで、となるとデプロイされるファイル名には
それほど大きな意味がない

ってことが多いのではないかな
0443438
垢版 |
2024/05/12(日) 01:18:55.04ID:???
Vite は、Ruby on Rails をコピーしたのかな?

foreman, webpack-dev-server で、hot reload するみたいな?
ファイルを修正したら、即ブラウザに反映されるとか

開発時には、CSS をコンパイルせず、
動的にスタイルを当てているだけとか
0444435
垢版 |
2024/05/13(月) 12:34:09.69ID:???
Viteの使い方がやっとわかりました!
ファイル名が変わるのは許容します

これから少しずつ学んでいきます
みなさんアドバイスありがとうございました
0445Name_Not_Found
垢版 |
2024/05/19(日) 12:06:09.78ID:???
実際にサイトをサーバーに公開することになったらファイル名のうしろにつくハッシュ値の恩恵がわかると思うよ
キャッシュのこと気にしなくていいからね
0446Name_Not_Found
垢版 |
2024/05/19(日) 17:31:28.31ID:t4Sl9HBx
アプリで登録されたユーザー情報をWEBアプリで管理するということで
制作会社から管理画面のラフが送られてきたのですが、
ある箇所で、アプリで登録したユーザーのメアドをプルダウンで選択するんだそうです。
0447Name_Not_Found
垢版 |
2024/05/19(日) 17:31:42.46ID:t4Sl9HBx
続き
「今はテストなので登録数は20-30件ですが、仮に50,000人とかになったら?」
と尋ねたら「プルダウンされた50,000行の中から目視で探す」んだそうで
それが正しいやり方だと言い張って平行線です。
どう論破したら良いでしょう?
0449Name_Not_Found
垢版 |
2024/05/19(日) 17:32:34.27ID:t4Sl9HBx
長文の投稿ができなかったので分割にて投稿させていただきました。
何卒よろしくお願いいたします。
0450Name_Not_Found
垢版 |
2024/05/19(日) 21:33:26.78ID:???
論破もくそもねーわ
変更したいなら変更すればいいじゃん

これ100%発注側の問題だからな
0451Name_Not_Found
垢版 |
2024/05/19(日) 21:37:15.08ID:???
まあそうだわな

客あるあるだけど
欲しいもの、必要なものをちゃんと説明できないのは
本当によくあることで
だいたいの不幸や不具合はそこが起点になるんだ

作る側もそれはわかってるから
出来るだけ真意を聞き出そうとはするんだけど

で、平行線になってるってことは
説明不足のまま、もう作っちゃったからでしょ
ちゃんと追加料金払って変更してもらいなさいな
0452Name_Not_Found
垢版 |
2024/05/19(日) 23:34:29.79ID:t4Sl9HBx
今後のために教えてください。
「アプリで登録されたユーザー情報」を「WEBアプリで管理したい」
という話し合いはしていましたがプルダウンにする/しないという
話し合いは確かにしていませんでした。

また自分は普段別の領域で制作業務を行なっており
アプリに関して無知ですが制作系はそこそこのクライアントをこなしています。

アプリの業界では特に話し合いを詰めないと
この様な非常識な仕様がポンと出てくるものなのでしょうか?
自分がいる業界ならば二度と仕事は振られないと思います。
(考えれば使いづらいのは話し合うまでもなくわかるでしょう、それがわからないのなら次はない、という感じ)
0453Name_Not_Found
垢版 |
2024/05/20(月) 04:30:40.53ID:???
>>452
>「アプリで登録されたユーザー情報」を「WEBアプリで管理したい」という話し合い
いやいやざっくりすぎやろw
項目すら詰めてないとか非常識にもほどがあるんだけど
0454Name_Not_Found
垢版 |
2024/05/20(月) 04:41:36.75ID:???
>この様な非常識な仕様がポンと出てくるものなのでしょうか?
どういう会社にどういう条件でいくら支払うか次第
海外とかにユルユルな発注を低予算でやるとそれなりによくあること

さすがに5万件になったら使いづらいというのは受注側も百も承知
それが理解できないような人間には出会ったことがない
お金の問題かスケジュールの問題か人不足か
いずれにしろ仕様変更の影響度が大きすぎるから今の条件では対応できないということ

ぶっちゃけ言えば君から二度と仕事を振られなくても別に困らないということでもある
0455Name_Not_Found
垢版 |
2024/05/20(月) 05:52:45.85ID:???
非常識な業者は多い。
だから優秀な社員、又はアドバイザーみたいな第三者を雇う。
例えば家の売買なら、直接売買せずに宅建業者を通すのと同じ

後はキャンセルして、裁判して金を取り返す。
そんな業者と付き合っても損するだけ

詐欺みたいなもの
0456Name_Not_Found
垢版 |
2024/05/20(月) 10:57:02.57ID:???
>>452
>アプリに関して無知ですが

無知な人が関わっちゃったのが
問題の根っこなのはさて置き
データ件数とかは設計時に検討した?のかな?

自分も死ぬほど経験しているけど
ウェブ制作会社のディレクターって
ウェブのこと全然知らないじゃん?

あんまり関わらない方がいいよ
自分でも作れるけどやらないだけ、くらいになるまでは
0457Name_Not_Found
垢版 |
2024/05/20(月) 12:27:55.29ID:???
NGワードに引っかかって書けない
0458Name_Not_Found
垢版 |
2024/05/20(月) 12:29:03.18ID:???
登録済みユーザーを一覧できる画面とか存在しないのかな?
負荷を無視して単に使い勝手を改善したいならデータリストに変更すれば解決
0459Name_Not_Found
垢版 |
2024/05/20(月) 13:50:28.68ID:???
独自のプルダウンを開発すれば5万件いける
無限スクロールすればいい
0460Name_Not_Found
垢版 |
2024/05/21(火) 00:30:12.39ID:rWUCBStb
質問者です。
知り合いのエンジニアさんが助けてくれて
解決できる機能のソースコードは持っていて、
自由に使って良いですよ、と言われているのですが
提案したらクオリティの担保ができないから断られました。
まあわかるんですが、クオリティが低いから問題になっているのですが、、という感じです。
0461Name_Not_Found
垢版 |
2024/05/21(火) 02:01:35.96ID:???
その開発会社思ったよりはまともそうでよかったじゃんw
0462Name_Not_Found
垢版 |
2024/05/21(火) 02:09:32.00ID:???
キチガイクライアント掴んでしまったか
0463Name_Not_Found
垢版 |
2024/05/21(火) 10:08:23.66ID:???
書けば書くほど墓穴を掘っていくな
君が第一にやるべきはソースコードを渡すことじゃなくて
どう修正して欲しいかを含めて整合性のある要求仕様としてまとめて提示することだぞ

単純なCRUDアプリなんだから要求仕様さえきちんとまとまっていればこんな問題は起きない
0464Name_Not_Found
垢版 |
2024/05/21(火) 10:26:57.06ID:???
モバイルアプリで登録済みのユーザー情報を管理するためのWebアプリなら
普通は検索画面、一覧画面、ユーザー単位の詳細画面があって
一覧画面や詳細画面からユーザー単位の編集画面へリンクされるので
編集画面でそのユーザーのメールアドレスをドロップダウンから選ぶ必要はない

あるユーザーと別のユーザーを手作業で紐づける機能が必要ということであれば
ユーザー単位の編集画面から紐づける機能を起動して検索画面 -> 一覧画面 -> 詳細画面と辿る
この場合は紐づけ処理中かどうかで一覧画面や詳細画面の内容を変える必要があるから画面数の扱いとしては別画面
0465Name_Not_Found
垢版 |
2024/05/21(火) 10:59:06.94ID:???
このくらい小規模な開発だと
要件定義含めて客とのやり取りと
客に説明するためのドキュメント作りがコストの大半だからな
それを理解しない客は避けるに越したことがない
0466Name_Not_Found
垢版 |
2024/05/21(火) 18:20:05.59ID:rWUCBStb
>>463
単純なCRUDアプリであれば、
整合性のある要求仕様を提出しなくても
ある程度のクオリティが上がってくるものだとおもっていました。

こちらは私の完全な落ち度ですね。

ただ、この場合制作会社が
「仕様書がなかったから、或いは具体的な指示がなかったから50,000行を一気に表示しても良いと思った」
として50,000行を一気に表示するようなものを作った、みたいなことはよくあることなのでしょうか?

自分の業界であれば素人のクライアントには合理的な解決法をアドバイスするかなと思います。後で自分が地雷撤去で困ることもあるし、次の仕事がほしいので。
0467Name_Not_Found
垢版 |
2024/05/21(火) 21:26:12.02ID:???
>>466
>単純なCRUDアプリであれば、
>整合性のある要求仕様を提出しなくても
>ある程度のクオリティが上がってくるものだとおもっていました。
アホすぎるww
0468Name_Not_Found
垢版 |
2024/05/21(火) 21:40:15.32ID:???
提案内容が気に入らないなら望ましいと思う内容に変更してもらえばいいだけなのになぜそれができないんだろう?
そこに問題の本質がありそう
0469Name_Not_Found
垢版 |
2024/05/21(火) 21:41:14.86ID:rWUCBStb
>>468
日本語の堪能なアメリカ人なんですけど
正しいから直す必要がないの一点張りなんですよね。
0470Name_Not_Found ころころ
垢版 |
2024/05/21(火) 22:38:06.75ID:???
>>469
下らない嘘までついて隠さなきゃいけない裏事情があることだけはよく分かった
レスを投稿する


ニューススポーツなんでも実況