<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>高齢者システムエンジニアの奮闘記</title>
<link>https://ameblo.jp/senior-se-man/</link>
<atom:link href="https://rssblog.ameba.jp/senior-se-man/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>コンピュータ歴５０年のエンジニアが自分自身を振り返るために、突然の思いつきからシステム作りを始めました。</description>
<language>ja</language>
<item>
<title>高齢者のＷｅｂアプリ開発 №７</title>
<description>
<![CDATA[ <p><b style="font-weight:bold;"><span style="font-size:1.4em;">気まぐれ　トンとんトン・・・。</span></b></p><p><b style="font-weight:bold;"><span style="font-size:1em;">　</span></b><span style="font-size:1em;">相変わらずの気まぐれで、なんやかやと変更したい部分が発生しています。</span></p><p><span style="font-size:1em;">　今回は処理モードを確定して、それに伴う処理を行う様に変更を加えました。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">商品マスタ設定画面</span></b></p><p><b style="font-weight:bold;"><span style="font-size:1.4em;"><a href="https://stat.ameba.jp/user_images/20260720/15/senior-se-man/39/09/p/o0404059515804325023.png"><img alt="" height="595" src="https://stat.ameba.jp/user_images/20260720/15/senior-se-man/39/09/p/o0404059515804325023.png" width="404"></a></span></b></p><p>ここで今まで体験したことがないｊｓｏｎエラーが発生しました。</p><p>悩むこと丸一日、中々答えが見つかりません。</p><p>色々と調べてもコード的な原因が見つかりません。</p><p>二日目の朝、以前から<span style="font-size:1em;">よく</span>ミスををしていた「ファイルのコード」を念のため調べました。</p><p>案の定ＰＨＰファイルだけＵＴＦコードになっていません。</p><p>製造中はデータベース項目を貼り付ける作業が中心で、たまたまエラーにならなかった様で</p><p>す。</p><p>データベースはテーブルを製造する時にＵＴＦコードの設定をしていますので問題なく、文</p><p>字を使う部分でｊｓｏｎエラーになる部分が発生したと考えています。</p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">スマホによる動作の異なり発生</span></b></p><p><span style="font-size:1em;">ある程度動作確認ができる状態になりましたので、スマホで動作確認を行いました。</span></p><p><span style="font-size:1em;">パソコンでは問題なく動作していますが、スマホになると同じ様に動作しない部分が発生し</span></p><p><span style="font-size:1em;">ました。</span></p><p><span style="font-size:1em;">まずＥｎｔｅｒキーの動作ですが、イベントの動作についてはｋｅｙｄｏｗｎイベントを利</span></p><p><span style="font-size:1em;">用して発生キーのコードを確認する様にしていましたが、この処理がスマホではパソコン同</span></p><p><span style="font-size:1em;">様の処理ができないことが分かりました。</span></p><p><span style="font-size:1em;">色々と調べた結果、イベントをｃｈａｎｇｅに変更してキーコードを確認しない様に変更し</span></p><p><span style="font-size:1em;">たら希望する様な動作が得られました。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">次にｔｅｘｔａｒｅａタグの問題です。</span></b></p><p>商品名の入力文字数が全角２５文字で、スマホ画面のサイズを考えるとｉｎｐｕｔタグは幅</p><p>が大きくなり使用できず、ｔｅｘｔａｒｅａタグの複数行入力を使用して幅を小さくしまし</p><p>た。</p><p>これで可能かと思いましたが、Ｅｎｔｅｒキーが複数行の改行動作になりますので利用でき</p><p>ません。</p><p>イベントがｃｈａｎｇｅですので、入力終了は枠外をクリックしてフォーカスを移動させる</p><p>ことになります。</p><p>これよりも入力終了ボタンを追加して明確に終了とする方法を選択しました。</p><p>上の画面が説明の状態になります。</p><p>これで今のところスマホについての動作問題は落ち着いています。</p><p>&nbsp;</p><p>商品マスタ設定画面は　<span style="color:#ff0000;"><span style="font-size:1.96em;">製造継続中です。</span></span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">小分類マスタ設定画面</span></b></p><p><b style="font-weight:bold;"><a href="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/c1/4f/p/o0405056915800197328.png"><img alt="" height="569" src="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/c1/4f/p/o0405056915800197328.png" width="405"></a></b></p><p><span style="font-size:1em;">この小分類マスタ設定画面は前の中分類マスタ設定画面と比べて使用している項目が</span></p><p><span style="font-size:1em;">変更になるだけです。</span></p><p><span style="font-size:1em;">ただ、この画面を製造する時に新しい問題とか気まぐれが発生しますので、さかのぼ</span></p><p><span style="font-size:1em;">って修正を加えます。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">中分類マスタ設定画面</span></b></p><p><a href="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/c4/46/p/o0406056715800197283.png"><img alt="" height="567" src="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/c4/46/p/o0406056715800197283.png" width="406"></a></p><p><span style="font-size:1em;">大分類マスタ設定画面に新しく上位の「大分類コード」テキストが追加になりました。</span></p><p><span style="font-size:1em;">今までの画面はボタンだけのイベントでしたが、それにテキストのイベントが増えました。</span></p><p><span style="font-size:1em;">大分類コード入力で大分類名をデータベースから読込みますので、この処理をテキストの</span></p><p><span style="font-size:1em;">イベントの中に記述しています。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">大分類マスタ設定画面</span></b></p><p><a href="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/8f/0f/p/o0404047215800197223.png"><img alt="" height="472" src="https://stat.ameba.jp/user_images/20260707/13/senior-se-man/8f/0f/p/o0404047215800197223.png" width="404"></a></p><p><span style="font-size:1em;">店舗設定と同じく今回の製造の基本となる画面になります。</span></p><p><span style="font-size:1em;">画面の行数を減らすために更新ボタンを横並びに変更しました。</span></p><p><br>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12971994977.html</link>
<pubDate>Tue, 07 Jul 2026 12:20:50 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №６</title>
<description>
<![CDATA[ <p><span style="font-size:1.4em;"><b style="font-weight:bold;">１本目のプログラミングの終了</b></span></p><p>「店舗設定」の開発はテスト仕様書の内容どおり完了しました。</p><p>&nbsp;</p><p><span style="font-size:1.4em;"><b style="font-weight:bold;">成果物(店舗設定)</b></span></p><p>　<a href="https://tako3club.org/テスト仕様書(店舗設定).pdf" rel="noopener noreferrer" target="_blank">・テスト仕様書 [PDF]</a></p><p>　<a href="https://tako3club.org/店舗設定_index_html.pdf" rel="noopener noreferrer" target="_blank">・開発コード(ＨＴＭＬ) [PDF]</a></p><p>　<a href="https://tako3club.org/店舗設定_api_php.pdf" rel="noopener noreferrer" target="_blank">・開発コード(ＰＨＰ) [PDF]</a></p><p>&nbsp;</p><p>　<span style="font-size:1em;">レベルが高いコードではありませんが、ご覧ください。</span></p><p><span style="font-size:1em;">　簡易型システムとして作成しましたので、ご了承下さい。</span></p><p>　次は「大分類設定」画面のプログラミングですが、今回の開発した内容が</p><p>　ベースになります。</p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">今回の課題</span></b></p><p><span style="font-size: 22.4px;"><b>&nbsp;&nbsp;</b></span><span style="font-size:1em;">店舗設定について課題は残りました。</span></p><p><span style="font-size:1em;">　<b style="font-weight:bold;">①レコード排他の開始位置</b></span></p><p><span style="font-size:1em;">　　今の更新ボタンの中で排他設定・解除を行っていますが、同じタイミングで同一</span></p><p><span style="font-size:1em;">　　レコードを操作した場合、後から更新をした方の内容が残ります。</span></p><p><span style="font-size:1em;">　　現実問題として同一店舗を同時に更新することがあるのか考えてみるとまずあり</span></p><p><span style="font-size:1em;">　　ません。</span></p><p>　　<span style="color:#cc0000;">現行環境で色々と考えてみました。</span></p><p><span style="color:#cc0000;">　　非同期通信の中で悲観的排他を実行した場合に、途中で非同期通信の処理をぬけ</span></p><p><span style="color:#cc0000;">　　るとTranzactionが無効になって排他ロックが維持できなくなります。</span></p><p><span style="color:#cc0000;">　　この様な場合には楽観的排他がベストの様にも感じましたが、決論として現行の</span></p><p><span style="color:#cc0000;">　　更新ボタン内での悲観的排他を継続する様にしました。</span></p><p>&nbsp;</p><p><span style="color:#cc0000;">　　店舗設定は入力項目が店舗名の１項目ですが、入力する項目が増えると更新ボタ</span></p><p><span style="color:#cc0000;">　　ン内の排他の意味が増してくると考えます。</span></p><p>&nbsp;</p><p><font color="#cc0000">　　最終形態</font></p><p><font color="#cc0000">　　　ＩＮＳＥＲＴ…２重キーの発生で対応する。</font></p><p><font color="#cc0000">　　　ＤＥＬＥＴＥ…レコード無しで対応する。</font></p><p><font color="#cc0000">　　　ＵＰＤＡＴＥ…登録状況確認で取得した更新日と排他ロックで取得した更新</font></p><p><font color="#cc0000">　　　　　　　　　　日を比較して、後者が大きい場合は更新済みとしてエラーに</font></p><p><font color="#cc0000">　　　　　　　　　　にする。　　　　　　　　　　&nbsp; &nbsp;</font></p><p>&nbsp;</p><p><span style="font-size:1em;">　<b style="font-weight:bold;">②Ｅｎｔｅｒキーの動作</b></span></p><p><span style="font-size:1em;">　　前段で記述したとおりＥｎｔｅｒキーで次の項目へ進むことは必要と考えます。</span></p><p><span style="font-size:1em;">　　ここで問題になるのがボタンにフォーカスがある場合、Ｅｎｔｅｒキーを押すと</span></p><p><span style="font-size:1em;">　　次の項目へ移動します。</span></p><p><span style="font-size:1em;">　　つまりボタンはクリックでしか動作しません。</span></p><p><span style="font-size:1em;">　　Ｅｎｔｅｒキーで誤ってボタンの処理を動作させるよりもクリックに限定した方</span></p><p><span style="font-size:1em;">　　が処理的に問題がない様にも感じます。</span></p><p><span style="font-size:1em;">　　大した問題ではありませんが拘ってしまいました。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1.4em;">ｗｅｂシステムの難しさを実感！！</span></b></p><p><span style="font-size:1em;">　「店舗設定」のプログラミング完了後、他の環境での動作を行いました。</span></p><p><span style="font-size:1em;">　<b style="font-weight:bold;">使用した環境</b></span></p><p><span style="font-size:1em;">　　・Windows11 + Google chrome&nbsp; (開発環境)</span></p><p><span style="font-size:1em;">　　・Linux(mint) + Google chrome</span></p><p>　　・Android&nbsp;+&nbsp;Google chrome</p><p>&nbsp;</p><p>　非同期通信に必要な手続きを完全に設定せずに、Windows でデバッグを行い目的</p><p>　とする動作が得られたので完了と思いましたが、上に記述したとおり環境に変える</p><p>　と同じ動作が再現できませんでした。</p><p>&nbsp;</p><p>　原因は非同期通信で取得した内容を画面項目の[value]に代入していますのでタグ</p><p>　の属性が変わり、[input]タグのパターンが初期設定の状態ではありませんでした。</p><p>　対策として、画面項目の[value]に代入した後にパターンの再設定を追加しました。</p><p>　この問題に関してはＬｉｎｕｘ環境で正常動作の確認が完了しています。</p><p>&nbsp;</p><p>　更にスマホ環境については、回線の不安定による問題やスマホ独自の挙動が考え</p><p>　られます。</p><p>　現行の中にも多少の対応は記述をしていて、問題が発生しなければ処理はできま</p><p>　すがベストではありません。</p><p>　そのためにスマホが必要な処理については、ＫｏｔｌｉｎやＤａｒｔの様なスマ</p><p>　ホに適した言語を使用することを考えています。</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12969889925.html</link>
<pubDate>Tue, 16 Jun 2026 21:24:25 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №５</title>
<description>
<![CDATA[ <p><b style="font-weight:bold;"><span style="font-size:1.4em;">店舗登録の画面遷移</span></b></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1em;">登録前のデータベースの内容</span></b></p><p><b style="font-weight:bold;"><span style="font-size:1em;"><a href="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/29/45/p/o0483010215792829072.png"><img alt="" contenteditable="inherit" height="102" src="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/29/45/p/o0483010215792829072.png" width="483"></a></span></b></p><p><span style="font-size:1em;">[03 店舗Ｃ] を追加する前のデータベースの内容になります。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size:1em;">登録する前の準備画面</span></b></p><p><span style="font-size:1em;"><a href="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/09/e6/p/o0405058115792830240.png"><img alt="" height="581" src="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/09/e6/p/o0405058115792830240.png" width="405"></a></span></p><p>①店舗コード[03]を入力して「登録状況確認」ボタンを押しました。</p><p>②店舗名を入力して「データ登録」ボタンを押します。</p><p>下の枠には操作手順が表示されています。</p><p>&nbsp;</p><p><b style="font-weight:bold;">登録後の画面</b></p><p><a href="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/31/6e/p/o0407058115792833942.png"><img alt="" height="581" src="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/31/6e/p/o0407058115792833942.png" width="407"></a></p><p>枠の中が「データの登録が正常に終わりました。」に変わっています。</p><p>&nbsp;</p><p><b style="font-weight:bold;">変更モードで確認</b></p><p><b style="font-weight:bold;"><a href="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/4b/ef/p/o0405056915792835624.png"><img alt="" height="569" src="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/4b/ef/p/o0405056915792835624.png" width="405"></a></b></p><p>登録された内容が表示されていますので、店舗名の変更やレコードの削除ができます。</p><p>店舗コードについては主キーが設定されていますので変更ができません。</p><p>削除して再登録の処理になります。</p><p>&nbsp;</p><p><b style="font-weight:bold;">登録後のデータベースの内容</b></p><p><b style="font-weight:bold;"><a href="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/a9/ed/p/o0484013015792838528.png"><img alt="" contenteditable="inherit" height="130" src="https://stat.ameba.jp/user_images/20260614/16/senior-se-man/a9/ed/p/o0484013015792838528.png" width="484"></a></b></p><p>&nbsp;</p><p><b style="font-weight:bold;">ここまでの感想</b></p><p>久しぶりのプログラミングでしたので、単純ミスの繰り返しで苦労しました。</p><p>エラーの解決はＧｏｏｇｌｅのコンソールとレンタルサーバーのｐｈｐのエラーログ</p><p>を使用しています。</p><p>&nbsp;</p><p><b style="font-weight:bold;">お詫び</b></p><p>現在２つのブログを投稿していますので、時間を切り分けながら準備をしています。</p><p>家にいる時はプログラミング中心で、それ以外はブログの取材で福岡・佐賀・長崎・</p><p>大分・熊本を下道を利用してドライブしています。</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12969658838.html</link>
<pubDate>Sun, 14 Jun 2026 16:53:14 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №４</title>
<description>
<![CDATA[ <p><span style="font-size:1.4em;"><b style="font-weight:bold;">業務メニュー製作</b></span>&nbsp; [index.php]</p><p><a href="https://stat.ameba.jp/user_images/20260605/17/senior-se-man/30/cd/p/o0401063215789795159.png"><img alt="" height="632" src="https://stat.ameba.jp/user_images/20260605/17/senior-se-man/30/cd/p/o0401063215789795159.png" width="401"></a></p><p>成果物　<a href="https://tako3club.org/f-menu.txt" rel="noopener noreferrer" target="_blank">コード内容</a></p><p>&nbsp;</p><p>コーディング パターン (ｐｈｐファイル)</p><p>　ｐｈｐコード</p><p>　ｈｔｍｌコード</p><p>&nbsp;</p><p>コーディングを始める前に考えてみました。</p><p>ｗｅｂのシステム開発は基本ができている訳でもなく、どちらかと言うと自分流(我流)で</p><p>やっています。</p><p>今回自分流を振り返る意味で、ｗｅｂの基本スタイルを調べて方向性を明確に定義しよう</p><p>と考えました。</p><p>&nbsp;</p><p>まず、最初に明確にしたいと思った内容は、「非同期通信」です。</p><p>現在動作している非同期通信システムはＡｊａｘを利用したものですが、以前から疑問が</p><p>ありました。</p><p>&nbsp;</p><p>今回、非同期通信について調べました。</p><p>まずＧｅｍｉｎｉ様がどの様な回答を出してくるか、問いかけてみました。</p><p>&nbsp;</p><p>回答があったサンプルコードを動作させてみましたが、ｊｓｏｎのエラーが出てなかなか</p><p>実行できません。</p><p>１３日の金曜でもないのにｊｓｏｎエラー？　(映画の見過ぎ？？)</p><p>&nbsp;</p><p>２日間悩んで、風呂上りにコードを再度見てみましたが問題ありません。</p><p>ふとエディターの下の方を見たら、ｈｔｍｌファイルはｕｔｆ－８、非同期通信のｐｈｐ</p><p>ファイルはｓｊｉｓになっています。</p><p>これならｊｓｏｎエラーになるなと感じ、修正しましたら正常に動作しました。</p><p>&nbsp;</p><p>シンプルな非同期通信を調べた結果、Ａｊａｘかｆｅｔｃｈか、今回はｆｅｔｃｈを利用</p><p>して開発することにしました。</p><p>&nbsp;</p><p><b style="font-weight:bold;"><span style="font-size: 22.4px;">店舗設定画面</span></b><span style="font-size:1em;">&nbsp; [f-tenpo.php]</span></p><p><span style="font-size: 22.4px;"><a href="https://stat.ameba.jp/user_images/20260605/17/senior-se-man/f6/a7/p/o0403057315789795304.png"><img alt="" height="573" src="https://stat.ameba.jp/user_images/20260605/17/senior-se-man/f6/a7/p/o0403057315789795304.png" width="403"></a></span></p><p><b style="font-weight:bold;"><span style="font-size:1em;">【仕様】</span></b></p><p>スマホ画面の操作を考えて、テキストの高さを４２ｐｘボタンの高さを４８ｐｘとする。</p><p>&nbsp;</p><p><span style="font-size:1em;">初期の操作可能項目</span></p><p><span style="font-size:1em;">　店舗コード入力</span></p><p><span style="font-size:1em;">　登録状況確認ボタン</span></p><p><span style="font-size:1em;">その他の項目は操作できない様にする。</span></p><p>&nbsp;</p><p><span style="font-size:1em;">店舗コードを入力して、登録状況確認ボタンを押す。</span></p><p>&nbsp;</p><p><span style="font-size:1em;">店舗コードが未登録の場合</span></p><p><span style="font-size:1em;">　店舗名を入力可に、データ登録ボタンを操作可に、その他のボタンは操作不可にする。</span></p><p><span style="font-size:1em;">店舗コードが登録済みの場合</span></p><p><span style="font-size:1em;">　店舗名称を表示して入力可に、データ変更ボタンとデータ削除ボタンを操作可にする。</span></p><p><span style="font-size:1em;">　その他のボタンは操作不可にする。</span></p><p>&nbsp;</p><p><b style="font-weight:bold;">【データベース更新】</b></p><p>データ登録…Ｉｎｓｅｒｔコマンド</p><p>データ変更…Ｕｐｄａｔｅコマンド</p><p>データ削除…Ｄｅｌｅｔｅコマンド</p><p>Ｕｐｄａｔｅの場合、変更日に現在の日時を入力する。</p><p>&nbsp;</p><p><span style="font-size:1em;">動作確認が終了したら以下の内容を別ファイルへ書き換える。</span></p><p><span style="font-size:1em;">　・起動ファイル　　　　　：f-tenpo.php</span></p><p><span style="font-size:1em;">　・ｃｓｓ　　　　　　　　：f-tenpo.css</span></p><p><span style="font-size:1em;">　・ｊａｖａｓｃｒｉｐｔ　：script.js&nbsp;(共通)&nbsp; tenpo.js&nbsp;(個別)</span></p><p><span style="font-size:1em;">　・ｐｈｐ　　　　　　　　：func.php (共通)&nbsp; tenpo.php (個別)</span></p><p>初期起動ファイルは、index.php 固定とする。</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12967448124.html</link>
<pubDate>Wed, 27 May 2026 11:51:28 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発  [コーヒータイム]</title>
<description>
<![CDATA[ <p><span style="font-size:1em;">本日のコーヒーは、Nescafe Gold Blend カフェインレスです。<br>胃に負担をかけない様に愛飲しています。(カフェイン９７％カット)<br><br>プログラミングに入る前に、Ｇｅｍｉｎｉ様に聞いてみました。<br>質問内容： スマホ HTML 画面を重ねる 注意事項</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;"><span style="color:#ff0000;">こんなん出ました・・・。</span></b></span><br><br><span style="font-size:1em;">スマートフォン（スマホ）のWEBサイトやアプリ開発において、HTML/CSSで画面</span></p><p><span style="font-size:1em;">（要素）を重ねるレイアウト（モーダル、ポップアップ、ドロワーメニュー、固定</span></p><p><span style="font-size:1em;">ヘッダーなど）を実装する際、スマホ特有の挙動や制約によるトラブルが多発します。<br><br>ユーザーの使いやすさ（UX）やアクセシビリティを損なわないために、必ず押さえて</span></p><p><span style="font-size:1em;">おくべき注意事項をまとめました。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">１. 背面のスクロール連動問題（スクロールバウンス）</b></span><br><span style="font-size:1em;">最前面にモーダルやメニューを重ねた際、その中でスクロールしようとすると、後ろ</span></p><p><span style="font-size:1em;">の背景画面（body）まで一緒にスクロールしてしまう、または背景だけが動いてしま</span></p><p><span style="font-size:1em;">う現象（Scroll Chain）が起きます。<br><br><b style="font-weight:bold;"><span style="color:#ff0000;">対策:</span></b>&nbsp;<br>重ねる画面が表示されている間は、CSSで body { overflow: hidden; } を付与して</span></p><p><span style="font-size:1em;">背景のスクロールを止めます。<br>　<b style="font-weight:bold;"><span style="color:#ff0000;">iOS（Safari）の注意点:&nbsp;</span></b><br>　iOSでは overflow: hidden だけでは背景スクロールが止まらないことが多いため、</span></p><p><span style="font-size:1em;">　JavaScriptの touchmove イベントを制御するか、</span></p><p><span style="font-size:1em;">　　CSSの overscroll-behavior: contain; を重ねる要素に指定してスクロールの</span></p><p><span style="font-size:1em;">　　伝播を防ぐ必要があります。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">２. タップエリアの重複と「誤タップ」</b></span><br><span style="font-size:1em;">画面を重ねる際、透明な背景（オーバーレイ）や非表示の要素が原因で、クリック</span></p><p><span style="font-size:1em;">イベントが意図しない挙動をすることがあります。</span></p><p><br><span style="font-size:1em;"><b style="font-weight:bold;">非表示時の注意（opacity の罠）:</b><br>モーダルを閉じる際、CSSで opacity: 0（透明）にしただけでは、要素はそこに存在</span></p><p><span style="font-size:1em;">し続けているため、ユーザーが下のボタンを押そうとしても透明な壁に阻まれてタッ</span></p><p><span style="font-size:1em;">プできない状態になります。<br><br><b style="font-weight:bold;"><span style="color:#ff0000;">対策:&nbsp;</span></b><br>非表示にする時は必ず display: none にするか、pointer-events: none を指定して、</span></p><p><span style="font-size:1em;">タップイベントを透過させてください。<br><br><b style="font-weight:bold;">z-indexの管理:</b><br>z-index の値はむやみに 9999 などを連発せず、コンポーネントごとのルール</span></p><p><span style="font-size:1em;">（例：ヘッダーは100、モーダルは200、トースト通知は300など）を決めて管理し</span></p><p><span style="font-size:1em;">ないと、重ね順が崩壊します。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">３. アドレスバー（ツールバー）による高さの変動</b></span><br><span style="font-size:1em;">スマホのブラウザ（SafariやChrome）は、スクロールすると画面下部や上部のアド</span></p><p><span style="font-size:1em;">レスバーが引っ込んだり出たりします。<br>これにより、画面の高さ（100vh）の定義が変わり、レイアウトが崩れる原因になり</span></p><p><span style="font-size:1em;">ます。<br><br><b style="font-weight:bold;">問題点:&nbsp;</b><br>height: 100vh; で画面いっぱいに重ねる要素を作ると、アドレスバーのせいで画面</span></p><p><span style="font-size:1em;">下部にあるボタン（「閉じる」や「決定」など）が隠れて押せなくなることがありま</span></p><p><span style="font-size:1em;">す。<br><br><span style="color:#ff0000;"><b style="font-weight:bold;">対策:&nbsp;</b></span><br>CSSの新しい単位である dvh（Dynamic Viewport Height） を使用してください。<br>height: 100dvh; と指定することで、アドレスバーの伸縮に追従した正確な全画面</span></p><p><span style="font-size:1em;">表示が可能になります。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">４.タップターゲットのサイズと位置（アクセシビリティ）</b></span><br><span style="font-size:1em;">画面を重ねて表示する「閉じる（×）」ボタンや「次へ」ボタンが小さすぎたり、</span></p><p><span style="font-size:1em;">押しにくい位置にあるとユーザーに強いストレスを与えます。<br><br><b style="font-weight:bold;">親指の届く範囲（親指ゾーン）:&nbsp;</b><br>スマホを片手で持った際、画面の上部は親指が届きにくいです。<br>重要な操作ボタン（「購入する」「保存する」など）を重ねる画面内に配置する場合</span></p><p><span style="font-size:1em;">は、画面中央から下部に配置するのが親切です。<br><br><b style="font-weight:bold;">ターゲットサイズ:</b><br>AppleやGoogleのガイドライン通り、タップできる要素は最低でも 44px × 44px</span></p><p><span style="font-size:1em;">（または 48px × 48px）以上のサイズを確保してください。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">5. キーボード表示時のレイアウト崩れ</b></span><br><span style="font-size:1em;">重ねた画面（フォームなど）の中にテキスト入力（&lt;input&gt; や &lt;textarea&gt;）があ</span></p><p><span style="font-size:1em;">る場合、スマホの仮想キーボードが立ち上がります。<br><br><b style="font-weight:bold;">問題点:&nbsp;</b><br>キーボードが立ち上がると、画面の表示領域が極端に狭くなります。<br>このとき、重ねている画面が固定（position: fixed）されていると、入力欄や</span></p><p><span style="font-size:1em;">「送信ボタン」がキーボードに隠れて見えなくなる、あるいは画面外に押し出され</span></p><p><span style="font-size:1em;">る現象が起きます。<br><br><b style="font-weight:bold;"><span style="color:#ff0000;">対策:</span></b>&nbsp;</span></p><p><span style="font-size:1em;">入力欄がある重ね込み画面は、縦方向に十分なスクロール（overflow-y: auto）が</span></p><p><span style="font-size:1em;">できるように設計しておく。<br><br><b style="font-weight:bold;">キーボード表示時（visualViewport の変更時）のレイアウトへの影響を実機で必</b></span></p><p><span style="font-size:1em;"><b style="font-weight:bold;">ず</b></span><span style="font-size:1em;"><b style="font-weight:bold;">テストする。</b></span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">まとめ：実装時のチェックリスト</b></span><br><span style="font-size:1em;"><span style="color:#ff0000;"><b style="font-weight:bold;">項目チェック</b>　</span><b style="font-weight:bold;">内容</b><br><span style="color:#ff0000;">背面固定　　　</span>モーダルを開いたとき、後ろの画面がスクロールしないか。<br><span style="color:#ff0000;">非表示時　　　</span>閉じているとき、透明な要素が下のボタンの邪魔をしていないか。<br><span style="color:#ff0000;">高さ指定　　　</span>100vh ではなく 100dvh を使い、ボタンが隠れないようにしてい</span></p><p><span style="font-size:1em;">　　　　　　　るか。<br><span style="color:#ff0000;">ボタンサイズ　</span>閉じるボタン（×）などは十分な大きさ（44px以上）があるか。<br><span style="color:#ff0000;">キーボード　　</span>入力フォームが立ち上がっても、ボタンや入力欄が隠れないか。</span></p><p>&nbsp;</p><p><span style="font-size:1.4em;">私の技量では半分ぐらいしか理解できませんが、開発の途</span></p><p><span style="font-size:1.4em;">中でＧｅｍｉｎｉ様に確認しながらクリアしたいと考えて</span></p><p><span style="font-size:1.4em;">います。</span></p><p>&nbsp;</p><p><span style="font-size:1em;">数年前は、ＡＩは使えないと感じていましたが、今回のシステム開発については、</span></p><p><span style="font-size:1em;">Ｇｅｍｉｎｉは十分使えると感じています。</span></p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12967354613.html</link>
<pubDate>Tue, 26 May 2026 13:21:11 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №３</title>
<description>
<![CDATA[ <p><b style="font-weight:bold;"><span style="font-size:1em;">画面設計書</span></b></p><p><span style="font-size:1em;">ＥＸＣＥＬを利用してスマホの画面イメージを作成しました。</span></p><p>スマホの画面定義で矛盾することもありますが、イメージとしてご理解下さい。</p><p>&nbsp;</p><p><a href="https://tako3club.org/画面設計書.pdf" rel="noopener noreferrer" target="_blank"><b style="font-weight:bold;"><span style="font-size:1.4em;">画面設計書(ｐｄｆリンク)</span></b></a></p><p>&nbsp;</p><p><b style="font-weight:bold;">マスタ情報</b></p><p><b style="font-weight:bold;">　</b>各マスタの初期設定、メンテナンスを行う画面です。</p><p>　商品マスタには小分類を設定しているので、分類を利用する時は小分類から</p><p>　大分類に向かって分類コードの結合を行う。</p><p>　本来の業務ではもっと項目が必要になりますが、今回は在庫管理システムと</p><p>　言うことで割愛して縮小しています。</p><p><b style="font-weight:bold;">　・店舗設定</b></p><p>　<b style="font-weight:bold;">・大分類設定</b></p><p>　<b style="font-weight:bold;">・中分類設定</b></p><p>　<b style="font-weight:bold;">・小分類設定</b></p><p>　<b style="font-weight:bold;">・商品情報設定</b></p><p><b style="font-weight:bold;">データ情報</b></p><p>　<b style="font-weight:bold;">・仕入入力</b></p><p>　　本来の業務では検品システムからの仕入確定や納品データの更新によって</p><p>　　仕入を確定しますが、今回は画面入力にしています。</p><p>　　通常は当月の日付しか入力できませんが、棚卸時期に翌期の仕入が入荷す</p><p>　　る場合がありますので翌月の仕入も入力を可能にします。</p><p>　<b style="font-weight:bold;">・売上入力</b></p><p>　　本来の業務ではレジデータからの取り込みが一般的です。</p><p><b style="font-weight:bold;">移動処理</b></p><p><b style="font-weight:bold;">　</b>入荷店に移動情報をどの様に伝えるか問題がありますが、本来は商品に移動</p><p>　明細を添付して出荷します。</p><p>　<b style="font-weight:bold;">・出荷処理</b></p><p>　　移動する商品と数量を移動№で登録します。</p><p>　　この時点では移動データとして未確定の状態です。</p><p>　<b style="font-weight:bold;">・入荷処理</b></p><p>　　移動№を入力して出荷データを表示して入荷数量を入力します。</p><p>　　更新することで移動データが確定します。</p><p><b style="font-weight:bold;">棚卸</b></p><p>　<b style="font-weight:bold;">・調書作成</b></p><p>　　残高対象データをＵＮＩＯＮで追加して、残高コンバートテーブルを作成</p><p>　　し棚卸調書テーブルを作成します。</p><p>　<b style="font-weight:bold;">・在庫調査</b></p><p>　　棚卸作業を行い棚卸調書テーブルに在庫数を更新します。</p><p>　<b style="font-weight:bold;">・在庫ロスリスト</b></p><p>　　ロスが発生した商品を確認できる様にします。</p><p>　<b style="font-weight:bold;">・棚卸未着リスト</b></p><p>　　棚卸作業がもれている商品を確認できる様にします。</p><p>&nbsp;</p><p><span style="color:#ff0000;"><b style="font-weight:bold;"><span style="font-size:1.4em;">これから、プログラムを作成します。</span></b></span></p><p><span style="color:#ff0000;"><b style="font-weight:bold;"><span style="font-size:1.4em;">色々な問題に遭遇すると思いますが、問題も含めて紹介</span></b></span></p><p><span style="color:#ff0000;"><b style="font-weight:bold;"><span style="font-size:1.4em;">をしていきます。</span></b></span></p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12967265179.html</link>
<pubDate>Mon, 25 May 2026 15:38:09 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №２</title>
<description>
<![CDATA[ <p><span style="font-size:1em;">まずは、データベースの設計から入ります。<br>テーブル設計書を作成して、システム全体に必要なテーブルを作成します。<br>テーブル設定都度にテストデータを作成して、意図している動作ができるか<br>確認をしていきます。<br><br>それからレコードの<b style="font-weight:bold;">排他制御</b>に関しては、<b style="font-weight:bold;">悲観的ロック</b>を利用します。<br><br>小売業の在庫管理の入出力は<br>　商品の入荷<br>　　・仕入<br>　　・商品移動(入荷)<br>　商品の出荷<br>　　・商品移動(出荷)<br>　商品の売上<br>　　・販売データ<br>　商品の在庫調査<br>　　・在庫管理調査<br>　店内へ品出し(棚管理)<br>　　・商品の配置場所を明確に指示する<br>　上記に必要なマスタ情報<br>　　・店舗マスタ<br>　　・大分類マスタ<br>　　・中分類マスタ<br>　　・小分類マスタ<br>　　・商品マスタ<br>　　・棚管理マスタ</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;"><a href="https://tako3club.org/データベース設計書.pdf" rel="noopener noreferrer" target="_blank">データベース設計書 (ｐｄｆリンク)</a></b></span></p><p>&nbsp;</p><p>今回はレンタルサーバーを利用しますが、プランによっては通信量やデータ<br>ベースサイズ等の制限があります。<br>集計処理についてはＳＱＬを利用して行いますので、発生件数によっては<br>制限によるトラブルが発生します。<br>今回はＬＩＭＩＴ句を利用して制限を超える場合の対策を考えています。<br>ちなみにデータ件数は、１０００件以上を想定していますので１０００件<br>単位のＬＩＭＩＴで繰り返しの処理を行います。<br>件数が多くなった場合は、集計テーブルに都度集計することもありますが<br>今回はＳＱＬ主体のシステム作りを行います。<br><br>私の中にはデータベースシステムが存在しないオフコン時代の古い考えが<br>残っていますが、ＳＱＬの利用したシステムを考えていますので処理時間<br>が課題として残るかもしれません。</p><p>&nbsp;</p><p><b style="font-weight:bold;">テーブル定義の補足<br>店舗マスタ</b><br>　店舗コードは２桁ですが、1～9までの数値にはゼロを付加する様にして<br>　います。(01～99とし文字列としています)<br>　ゼロを付加する重要性を考えています。<br>　店舗名は名称の後に空白が入らない様にvarchar型としています。<br><b style="font-weight:bold;">大分類マスタ</b></p><p><b>　</b>01～99とし文字列としています。<br><b style="font-weight:bold;">中分類マスタ</b></p><p><b>　</b>001～999とし文字列としています。<br><b style="font-weight:bold;">小分類マスタ</b></p><p><b>　</b>0001～9999とし文字列としています。<br>　各分類マスタについても「店舗マスタ」同様の事を考えています。<br>　分類コードは単品から大分類までリンクできる様にして、必要な分類を<br>　使用できる様に考えています。<br><b style="font-weight:bold;">商品マスタ</b><br>　個人的な好みかもしれませんが、数量や金額にはdecimal型を利用します。<br><b style="font-weight:bold;">仕入データ</b><br>　本来は当月だけのデータしか入りませんが、棚卸時に翌期の商品が入っ<br>　てくる場合がありますので、計上を繰越として除外することを考えてい<br>　ます。<br><b style="font-weight:bold;">移動データ</b><br>　出荷と入荷の両方の意味を含んでいて、入荷で計上の対象になります。<br>　数量の取扱いはtenpo_cdでマイナス計上、idousaki_cdでプラス計上を<br>　行います。<br><b style="font-weight:bold;">売上データ</b><br>　数量にはプラスの数値が計上され、在庫集計時はマイナスとして計上<br>　をします。<br><b style="font-weight:bold;">棚管理マスタ</b><br>　商品棚、棚の段数、横並びの列をＪＡＮコードを読込んで設定します。<br>　棚№と段№は物理的な番号を設定し、列は読込んだ順を連番として設<br>　定します。<br><b style="font-weight:bold;">残高コンバート</b><br>　棚卸調書用のコンバートしたデータを残します。</p><p>　デバッグ作業も考慮しています。(ＵＮＩＯＮを使用します)</p><p>　先々は一連のＳＱＬへ変更することも考えています。<br><b style="font-weight:bold;">棚卸調書</b><br>　残高コンバートを店舗、商品毎に集計したもので、これに期末の在庫<br>　と調査コードを更新します。<br>　翌期への繰越は棚卸終了後に期末在庫を新しい年度、期の期首在庫に</p><p>　更新します。<br><b style="font-weight:bold;">管理データ</b><br>　年度、期、当月を登録し月次処理が完了したら翌月内容に更新し年度</p><p>　、期も時期に合わせて更新します。</p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12967156508.html</link>
<pubDate>Sun, 24 May 2026 15:07:05 +0900</pubDate>
</item>
<item>
<title>高齢者のＷｅｂアプリ開発 №１</title>
<description>
<![CDATA[ <p><span style="font-size:1em;">ソフト会社を退職して５年以上、自宅で健康管理用のシステムを開発しています。<br>スマホで血圧の数字をデータベースから抽出して主治医の先生に見せています。<br>年々体力が落ちている様に感じますが、コンピュータに関する意欲は落ちていません。<br>７３歳の誕生日のある日ふと思いついたのですが、今までの経験を活かして現代風の<br>システムをボケ防止の為に作ってみようと思いつきました。</span></p><p>&nbsp;</p><p><span style="font-size:1.4em;"><b style="font-weight:bold;">家庭で使える環境</b></span><br><span style="font-size:1em;">　レンタルサーバー：　スターレンタルサーバー(無料プラン)<br>　データベース：　　　ＭｙＳＱＬ<br>　言語：　　　　　　　ＨＴＭＬ<br>　　　　　　　　　　　ＰＨＰ<br>　　　　　　　　　　　ＪａｖａＳｃｒｉｐｔ<br>　　　　　　　　　　　ｊＱｕｅｒｙ<br>　　　　　　　　　　　Ａｊａｘ</span></p><p>&nbsp;</p><p><span style="font-size:1em;">上記の言語とデータベースを使ってオフコン動作ベースの「在庫管理」システムを<br>設計からプログラミングまでを行います。</span></p><p>&nbsp;</p><p><span style="font-size:1.4em;"><b style="font-weight:bold;">なぜ、オフコン動作ベース</b></span><br><span style="font-size:1em;">ＷＥＢのプログラミングを行ってみると、フォーカスの動作、Ｅｎｔｅｒキーの<br>使い方などオフコンの動作との違いを感じます。<br>オフコン動作に疑問を感じられるかもしれませんが、通信のやり取りなどを考慮して<br>パソコン動作になれた使い方を模索しようと考えています。</span></p><p>&nbsp;</p><p><span style="font-size:1.4em;"><b style="font-weight:bold;">今までの主な仕事</b></span><br><span style="font-size:1em;">ＶＢを利用してクライアントサーバーシステムを開発していました。<br>パソコン画面から伝票等を入力するイメージです。<br>これをＨＴＭＬで行うと、同じ動作を作成するのに苦労します。</span><br><br><span style="font-size:1.4em;"><b style="font-weight:bold;">これからの開発</b></span><br><span style="font-size:1em;">スターレンタルサーバーは、Ｐｙｔｈｏｎも利用できますが、今回はＨＴＭＬ<br>を選択しました。</span></p><p><span style="font-size: 1em;">細かな動作については、ＪａｖａＳｃｒｉｐｔで補っていきます。</span></p><p><br><span style="font-size:1em;">利用端末はパソコンを主体に考えています。</span></p><p><span style="font-size:1em;">ただ、ハンディ機器を必要とする部分はスマホにスキャナーを装着して実現します。<br>バーコードを読込む付属機器も販売されていますので、ハンディターミナルイメージ<br>の処理が可能になります。<br><br>各言語に不慣れな部分は、Ｇｅｍｉｎｉを補足的に使っていきたいと考えています。<br>完成にどれくらい時間を要するか分かりませんが、製作過程を紹介したいと考えてい<br>ます。<br><br>最後に在庫管理に必要な項目だけにして、不必要な項目は割愛してコンパクトに製作<br>したいと考えています。<br>長年小売業のシステム作りを担当していましたので、詳細な部分を考慮するとシステム<br>が大きくなりますのでご了承下さい。<br>またＷＥＢ開発については、素人の域ですので宜しくお願いします。</span></p><p>&nbsp;</p><p><span style="font-size:1em;">手順としましては、<br>　・データベース設計書<br>　・画面設計書<br>　・プログラミング仕様書</span></p><p><span style="font-size:1em;">　・プログラミング<br>　・テスト仕様書<br>を主にして補足内容を付加して紹介します。</span></p>
]]>
</description>
<link>https://ameblo.jp/senior-se-man/entry-12967150528.html</link>
<pubDate>Sun, 24 May 2026 13:59:51 +0900</pubDate>
</item>
</channel>
</rss>
