2022年12月30日金曜日

PDFのページを逆順にするバッチ(ドラッグ&ドロップで実行)

 デスクトップにアイコンを置いておいて、そこにPDFをドラッグするとページの順番を逆順にするバッチです。

1、2、3ページの本なら3、2、1ページの順番になります。

縦書きで右綴じの小説などをPDFに自炊した際、ページを逆順にして最後から読むことでページを右から左に開けます。これがしたくて作ったバッチです。


動作前提

  • Windows10であること(Win10でしか動作試してません)
  • pdftkがインストール済みでパスが通っていること


動作概要

①バッチのアイコンにドラッグされた「AAA.pdf」を「AAA_逆順_pdftk処理用.pdf」というファイル名でコピーします。ファイルは同じ階層にコピーされます。
②「AAA_逆順_pdftk処理用.pdf」をpdftkでページ逆順に加工し、「AAA_逆順.pdf」というファイル名で保存します。
③最後に「AAA_逆順_pdftk処理用.pdf」を削除します。




バッチ

@echo off

rem ■■ PDFのコピー ■■
rem 「AAA.pdf」を「AAA.pdf_tmp」という名前でコピー。
copy %1 %1_tmp

rem 変数のファイル名を調整し、「.pdf_tmp」を削除。
rem 「AAA.pdf_tmp」の場合変数の中身が「AAA」になる。
set fileName=%1_tmp
set fileName=%fileName:.pdf_tmp=%

rem 「AAA.pdf_tmp」を「AAA_逆順_pdftk処理用.pdf」という名前にしてmove。
rem 「AAA_逆順_pdftk処理用.pdf」はpdftk実行後に削除する、一時的なファイル。
move %1_tmp %fileName%_逆順_pdftk処理用.pdf

rem ■■ pdftkにてページを逆順にする ■■
rem ページを逆順にする。
pdftk %fileName%_逆順_pdftk処理用.pdf cat end-1 output %fileName%_逆順.pdf

rem 「AAA_逆順_pdftk処理用.pdf」を削除する。
del %fileName%_逆順_pdftk処理用.pdf

echo 処理が完了しました。
echo 5秒後にウィンドウを閉じます…。
timeout 5 > null


使い方

  1. 上記のコードを「逆順に変換.bat」などの名前でデスクトップに保存する。
  2. PDFファイルを1で作ったアイコンにドラッグする。
  3. PDFファイルと同じ場所に逆順のファイルができる。


ネットで検索したらpdftkでページを逆順にするコマンドはいっぱい出てきたんですけど、バッチ化までされてる方が見つけられなかったので記事にしてみました。


※上記のバッチ作成は自己責任でお願い致します。動作保証は致しません。

2022年11月23日水曜日

【建設業経理士2級】試験会場の様子覚書

2022年9月に香川県高松市で建設業経理士2級の試験を受けてきました。

結果、なんと無事不合格だったためまた受けに行く予定です。

なので、次回に備えて会場の様子を覚えている限りで記録しておきます。

※うろ覚えですので内容の正確性が低いかもしれませんが、ご了承願います。

前提として、建設業振興基金の建設業経理検定のページは一通りご一読ください。


持ち物

・受験票

・筆記用具

・財布

・スマホ

・iPad(直前の勉強用)

・腕時計(チープカシオ)

・目薬

・ポケットティッシュ

・予備のマスク

このくらいでした。試験のときはアナログのチプカシを使ってます。

絶対音が鳴らないし正確なので好きです。

蛍光ペンと定規も持って行ってたんですが、試験中は使う余裕がありませんでした。


現地着

香川県の高松国際ホテルでした。
前日に電話で聞いてたんですが、ホテル前の駐車場を使っていいとのことでした。
ただ、建設業経理検定の「受験時のご注意」には"自家用車でのご来場はご遠慮ください。"と書いてあるので、気になる方は駐車可能か事前に会場に聞いておいたほうがいいかもしれません。
朝10:30くらいに到着して駐車し、ホテルに入って受付で会場の場所を確認。
入口入ってすぐのところに大きい看板があったので聞かなくともわかりそうでした。
もう会場入りできそうな感じでしたが、とりあえず車で待機。


試験会場入り~机の様子

1時間くらい前には会場入り。
(うろ覚えなんですが、11時過ぎには入ったと思う)

2級の会場は瀬戸の間。天井が高い。きらびやか。
会場前の廊下にホワイトボードが置いてあり、座席表が貼られてました。

長机が等間隔で並んでいて、長机1つに1人が座る形式。

机の端には受験番号の紙が置かれてました。
白いきれいな布が敷いてあって、透明なA4の下敷きが置いてありました。

この布と下敷きがクセモノ。
机に布が敷いてあるので下敷きの上でしか字が書けないんです。
計算式や金額を紙に書きまくるこの試験でこれは痛い。
次回は下敷き1枚持参しようかな…。

試験時刻前に以下を実施。
・携帯電話やタブレットを電源オフ
・不要なものを鞄にしまう
・鞄を足元に置く

試験開始

試験開始以降は他の資格試験と大差ないです。
ひたすら解く。
メモに使える計算用紙は4つ折りにして使ってましたが、もう1、2枚欲しかったな…。
あ、私名前の書き方がよくわからなくてヤフー知恵袋でこんな質問をしてました。
ご参考まで。

時間に余裕がある方は答えを問題用紙に控えて帰ったほうがいいです。
合格発表まで2ヶ月もあるので答え合わせができないと不安で身悶えます。
ちなみに問題用紙は試験終了時まで在席してないと持ち帰れないので注意。



こんな感じでした。
試験は12:00~14:00の2時間なので体感であっという間。
試験に1日費やす情報処理技術者試験はやっぱりイカれてるよ。

以上、ちょっとでもこれから試験を受けに行く人の助けになれれば幸いです。

2022年10月31日月曜日

【やめたほうがいい】DDJ-400-HA(D4DJ コラボレーションモデル)を買わないほうがいいただ一つの理由

パイオニアのDDJ-400-HA(D4DJコラボモデル)を買おうとしてる人に言いたいことがあります。

私個人の感想ですがやめたほうがいいです。

光の反射で印字が見にくいからです。


下は私の画像ツイートです。(画像の機材にはテプラを貼ってます)

写真だとなんか(見えないこともないんじゃない?大げさじゃない?)くらいに思えてきますが、印字が見えないのはものすごいストレスです。ちょっとボタンを押そうかなと思ったときにいちいち目を細める必要が出てきます。


ぶっちゃけ薄暗いクラブの現場でいちいち印字を見るのかというとそうでもないんですが、家での練習時には絶対気になります。

私の部屋の照明は全然普通のLEDシーリングライトです。

なので、どこのご家庭でも反射して字が見えない問題は起こると思います。

私の目線のせいもあるとは思いますがshiftキーの字は一切読めませんでした。


(DJ機材欲しいけど別に今じゃなくてもいいかな…)

という人はもっといいのが出るまで待ってください。

でもDDJ-400、機能的には申し分ないんだよな~~。。


上述の画像でも貼ってますがテプラを貼るとグンと使いやすくなりまして、そのためなのか現場での使用は全然問題ありませんでした。 

(私がなんとなくパイオニアのボタン配置を覚えてるというのもあると思いますが…)


家での練習用に買うのはマジでやめたほうがいいと思います。

明るいところで使うと反射が本当に気になります。

かといってじゃぁ他にどれを買うのかというと、パイオニア製に限って言うと特にないんですけどね…。


あ、DDJ-400に被せるカバーなんかもあるみたいなので、そういうのを買うのは手かもしれません。

2021年9月7日火曜日

LuaMacrosでバッチを実行する(プログラマブルキーボードもどき)

外付けのテンキーが押し入れから出てきたので、LuaMacrosを使って

ボタンひと押しでバッチを実行できるように遊んでみた。

エセプログラマブルキーボードですね。

で、設定で思いの外ハマったのでメモを残しておきます。

※例によってこの記事を真似して何が起ころうと、私は責任を取りません。


解説は省いて、LuaMacrosに書いたコードを置いておきます。

----------------------------------------------------------------------------------------

-- 最小化時にタスクトレイに隠す

lmc.minimizeToTray = true


-- 最小化

lmc_minimize()


-- キーボードに名前を割り当て

lmc_device_set_name("extnumpad", "11X1111X")


-- キー割り当て

lmc_set_handler("extnumpad", function(button, direction)

    if (direction == 1) then return end

    -- 0

    if (button == 96)  then

        lmc_send_keys("#(c)") 

    -- 1

    elseif (button == 97)  then

        lmc_spawn("C:\\test\\pdf.bat")

    -- 2

    elseif (button == 98)  then

        lmc_spawn("C:\\test\\jpghiraku.bat")

    -- 3

    elseif (button == 99)  then

        lmc_send_keys("#(d)")

    -- 4

    elseif (button == 100)  then

        lmc_spawn("C:\\test\\gamenlock.bat")

    end

end)

----------------------------------------------------------------------------------------


ちなみになんですが、私は以下がわからなくてハマりました。

・バッチや実行ファイルを指定するときは「lmc_spawn」を使う

・lmc_spawnの引数で「\」を使うときは「\\」でエスケープ

・「-- 」始まりでコメントアウト


その他ハマった点。

・Windows+Lの画面ロックがなぜかできない。

→試しにsendkeysしようとしたのがこれでハマった。

 コマンドを書いたバッチをキックする方法で回避。

 どの道自室のパソコンなので使うことはないけど…。


・ショートカットに割り当てたショートカットキーをキックするとなんか遅い

→Windowsの仕様らしい。

 Windows10のショートカットキーが重い件(Superfetch)

 SuperfetchとかSysMainを落としても変わらなかったので

 ファイルを開くバッチをキックする方法に逃げました。


・「00」を押すと「0」を2回押したことになる

→テンキーはハード的にそうなっているそうで、調べたけど対処法は不明。

 諦めました。一番下段の「0」「00」「・」の並びのキーを使いたかったけど

 まぁいいか…。。


・IMEオン(全角入力)のときにテンキーを押すと、ショートカットは効くが

 数字が入力されてしまう

→Google 日本語入力のプロパティで「テンキーからの入力」を

 「直接入力」にすることで回避。IMEだとできないかも? 


あとは以下のような感じのショートカットを作ってスタートアップに

入れて自動起動。いい感じです。

リンク先を
「C:\luamacros\LuaMacros.exe -r "C:\luamacros\tenkey.lua"」
にしてます。

今思うと、lmc_spawnでバッチじゃなくてショートカットを実行して
やったほうが簡素でいいのかな?

2021年9月5日日曜日

Behringer TD-3とAbleton Live 11をリンクさせる。

 BehringerのTD-3を買いました。

単体での打ち込みがむちゃくちゃ難しいので、Abletonとつなげて

DAWのシーケンサで鳴らせるようにしてみました。

接続や設定で困っている方のためにメモを残しておこうと思います。

※あくまで「私はこうしたら動いた」というメモです。

 この設定で正解なのか、なんでこの設定で動いているのはよくわかって

 おりません。このつなぎ方で何かあっても責任は一切取りませんので

 ご了承ください。

 

まず下準備として、TD-3のドライバソフト的なのを落としてきます。

前は別名だったようですが、今は「SYNTHTRIBE」というソフトに

なっているようです。以下から落とせました。

ダウンロードセンター


TD-3をパソコンにUSBでつないで電源を起動します。

「SYNTHTRIBE V2.5.5 Windows.exe」を実行し、SYNTHTRIBEの画面で

「Clock Source」を「MIDI USB」にします。


左下の「Update」からファームウェアもアップデートできるので、
しておきましょう。僕の場合、最初にファームのアップを要求されました。

続いて結線です。


僕は昔からTRAKTOR AUDIO6を使っています。
皆さんはご自分のオーディオインターフェースをお使いください。


機器を接続したらAbletonを起動しましょう。
「環境設定」の「Audio」から「ドライバタイプ」を「ASIO」に。
「オーディオデバイス」を「ASIO4ALL」に設定します。
(私はASIOを使っております。ASIOについてはネットで調べてみてください。)
続いて「ハードウェア設定」を押します。


ASIOの設定を以下にします。
オーディオインターフェースを有効(?)にしましょう。



さっきの環境設定に戻ったら、「チャンネル設定」の
「入力設定」を以下に変えます。


続いて環境設定の「Link Tempo MIDI」から設定を以下に変えます。
MIDIの入力・出力にTD-3を選び、MIDI Portsの
トラックのTD-3の箇所をチェックオンにしてください。

ここまでくれば設定完了(のはず)です。


メイン画面に戻って、「External Instrument」というモジュールを
挿入しましょう。


挿入したらてきとうにMIDIシーケンスを描いて
再生しっぱなしの状態にし、以下画面の部分を設定します。
この時点ではまだ音は出ないです。


「MIDI To」を「TD-3」に。
「Audio From」は音が鳴っているチャンネルを
選びましょう。
私ここがよくわかってないのですが、たぶん環境設定の「入力設定」で
有効化したチャンネルになるんだと思います。


次に、オーディオトラックを1個追加します。
入力タイプをさっき追加した「Ext. Instrument」に。
右端の録音ボタンをオンにします。
ここまでできたら画面上部「アレンジメント録音ボタン」を
押してみてください。オーディオトラックにTD-3のサウンドが
録音されていく…んではないかと思います…(ちょっと自信がない)

以上です。これでハードを動かした結果をオーディオトラックに
録音できるようになりました。

実は一点困っております。
私、上記の設定で録音はできるようになったのですが、
なぜか音量が小さいんです。
TD-3にヘッドホン直挿しすると十分聴こえるし、
オーディオインターフェースの問題かなぁ…。
現状、録音後にオーディオトラックの音量を上げることで回避しております。
まぁいいか。

今回、以下の動画を参考にしました。

この記事は2021/9/4時点の情報です。
ドライバソフトの名前など変わっていくかもしれませんのでご注意ください。


2021年8月13日金曜日

HDDのCドライブをSSDに換装してみた。

僕のパソコンはcorei7 64bitでメモリ8GB、HDDはC、Dドライブ合わせて

合計5TBとまぁまぁなスペックなんですが、起動に時間がかかるんです。

何回か計ったところ、だいたい2分強~3分くらいでした。

たぶんCドライブがHDDなのが原因だろうということで、SSDに

換装してみました。

(他にもメモリ増強やらファンの交換などいろいろした)


ドライブ換装

Cドライブが2TBもあるので、同じ容量のSSDを買ってきました。

Western Digital ウエスタンデジタル 内蔵 HDD 2TB WD Blue PC 3.5インチ WD20EZAZ-EC 【国内正規代理店品】


で、パソコンの蓋を開けて据え付け、接続。

付替前

こちらの手順を参考にCドライブをクローン。

SanDisk,WD SSDのOSクローンに無料配布の「Acronis True Image」を試してみた。簡単ステップでクローン完了

無償のフリーソフトではドライブのクローンができなくなっているというのが

ポイントかと思います。(2021/8/7時点)

ウェスタンデジタル製のSSDを接続していると使用できる

Acronis True Imageでクローンしました。

(今気づいたんですけど参考にしたページと使ってるソフトのバージョンが違う…

 僕は上のリンク先からダウンロードして使いました。)

ターゲットディスクを選択する画面や実行ボタンが出る画面など、

出てくるのに50分くらいかかる画面がありましたのでご注意ください。

考え中のポップアップが50分くらい出っぱなしになるのですが、処理は

ちゃんと進んでいるようです。

また、

「クローン元よりクローン先のほうが容量が小さいためクローン後起動できない可能性がありますがいいですか?」

みたいなメッセージも出ましたが、クローン元、先ともに2TBで

容量一緒なので無視して次へ進めました。

換装後のOS起動など、特に問題なかったです。


付替後

ドライブをクローンし、元のHDDを外した後、PCの電源をオン。

起動初回は元のCドライブのディスクがなくなっているため、

他のブート元を探しに行こうとします。

PXEブートしようとして真っ黒な画面で数分待たされて

ちょっと焦りましたが、無事SSDを認識して起動。

SSDを認識した時点で、ブート順序の1番目もSSDに変わったようです。


起動にかかる時間はこんな感じに改善されました。

HDD:約3分

SSD:約30秒

※電源ボタンON~ログイン、デスクトップのアイコンが表示されるまでを計測


メモリを8GBから16GBに増強した時点で3分かかっていたので、
いろいろ組み替える前は起動にもっとかかっていたのかもしれません。
実際もっと時間かかってた気がします。


バックアップ設定

SSDはいきなりの故障が怖いので、Cドライブの大事なところ、Dドライブの
大事なところをドライブ交互にバックアップするよう、フリーソフトで
設定しました。


FFFTPを作った曽田さん作のフリーソフトですね。
ヘルプを見るとコマンド例が載ってます。
バッチにしてスタートアップに入れて、起動のたびにバックアップが
走るようにしました。これに時間がかかりますが、バックグラウンドで
走ってくれて作業に影響ないからいいかな…。


その他影響

Ableton Live11のオーソライズが外れてしまったようで、
再度オーソライズし直しになりました。
Live起動後にボタンポチッと押せばすぐオーソライズできました。
ちょっと気持ち悪いな、と思ってAbletonに問い合わせしてみたんですが、
すぐにオーソライズの権利を一回分付与してくれました。
Abletonの問い合わせ窓口は対応が素早くて好きです。
DeeMMaxとかMassive、ZynaptiqのINTENSITYは動作に問題なさそう。たぶん。

CPUファンもブンブン唸ってうるさかったので、Cooler Masterの
CM12VからアイネックスのCC-06Sに変えてみたら
むちゃくちゃ静かになりました。グリス代入れて3000円ちょっとでこんなに
静かになるのは嬉しい。Cooler Masterの仕様がわからないので
数値的なノイズレベルがわからないですが、ちょっと心配になるくらい
唸りを上げていたのがPS4くらいになりました。

iTunesのiPhoneバックアップが時間がかかるのは改善されず…。。
全部Cドライブに取ってるから鬼早になるかと期待してたんですが、
いつもWi-Fiでバックアップしてるからそこがボトルネックなんでしょうね。

まとめ

起動時間も鬼早になるし、一部を除いてアプリの起動もなんか
早くなった気がするのでSSDへの換装、おすすめです。
ただSSDは予兆なくぶっ壊れるので、バックアップだけには
気をつけたいですね。いきなりぶっ壊れるというのも僕の昔の知識なので、
今はどうなんだろう…?フリーソフトで予兆とかできるのかな?

2021年5月16日日曜日

Googleドライブの画像ファイルをiPhoneで表示する(なわとび記録アプリの続き)


前回書いていたなわとび記録アプリが結構できました。

ちょこちょこっとノウハウも得られたので、

備忘録として書いておこうと思います。


まずはソースを。説明は後で書きます。

【コード.gs】

//URLをたたいたときに呼ばれる

function doGet(req) {

  const template = 'form';

  return HtmlService.createTemplateFromFile(template).evaluate();

}

// CSSを読み込む関数

function include(filename) {

  return HtmlService.createHtmlOutputFromFile(filename).getContent();

}


//画像を表示するための関数

function getBae64Image(id) {

  const file = DriveApp.getFileById(id);

  const data = file.getBlob().getBytes();

  return Utilities.base64Encode(data);

}


【form.html】

<!DOCTYPE html>

<html>

  <head>

    <base target="_top">

    <meta charset="utf-8">

    <!-- form.cssの読み込みはコード.gsに作成した関数で行う -->

    <?!=include('form.css');?>

    <title>なわとび記録</title>

    <meta name="viewport" content="width=device-width">

  </head>

  <!-- btnDayで初期値を今日に設定、imgDisplayでiPhone用の画像表示の仕込み -->

  <body onload="btnDay('today');imgDisplay('GoogleIDGoogleIDGoogleIDGoogleIDG','imgcalendar');imgDisplay('GoogleIDGoogleIDGoogleIDGoogleIDG','imgnawa');imgDisplay('GoogleIDGoogleIDGoogleIDGoogleIDG','imgcount');imgDisplay('GoogleIDGoogleIDGoogleIDGoogleIDG','imgmaccho')">

    <main>

      <!-- タイトル -->

      <div class="maintitle">なわとび記録</div>


      <form action="https://docs.google.com/forms/u/0/d/e/GoogleIDGoogleIDGoogleIDGoogleIDGoogleIDGoogleIDGoogleID/formResponse" method="post" target="hidden_iframe" onsubmit="submitted=true;">

        <P>

           <!-- 日付 -->

           <img id="imgcalendar" class="TitlePic">

           <input class="CalIphone" id="date" type="date" name="entry.123456789" required> <span class="dateChange" onclick="btnDay('today')">今日</span> <span class="dateChange" onclick="btnDay('yesterday')">昨日</span>

        </P>

        <P>

           <!-- 種類 -->

           <img id="imgnawa" class="TitlePic">

           <select class="SelIPhone" id="type" name="entry.123456789" required>

           <option value="前跳び" selected>前跳び</option>

           <option value="後ろ跳び">後ろ跳び</option>

           <option value="前二重跳び">前二重跳び</option>

           <option value="後ろ二重跳び">後ろ二重跳び</option>

           </select>

        </P>

        <P>

           <!-- 回数 -->

           <img id="imgcount" class="TitlePic">

           <input class="NumIphone" type="number" value="90" name="entry.123456789" placeholder="100" required><span class="NumText">回</span>

        </P>

        <P>

           <!-- 記録ボタン -->

           <div style="display:inline-flex">

              <img id="imgmaccho" class="MacchoPic"><input class="BtnSave" type="submit" name="button" value="記録する" onclick="saveMsg()">

           </div>

        </P>

        </form>

   </main>

    <!-- jQueryのCDNを読み込んで使えるようにする -->

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

    <script type="text/javascript">

            //今日か昨日の日時を表示

            function btnDay(flg) {

                var date = new Date()

                //flgによって今日か昨日を取得する

                if (flg == "today") {

                   //何もしない

                } else if (flg == "yesterday") {

                   //昨日を取得する

                date.setDate(date.getDate() - 1);

                } else {

                   //エラーの場合は何もせず、今日を取得

                }

                var year = date.getFullYear()

                var month = date.getMonth() + 1

                var day = date.getDate()

              

                var toTwoDigits = function (num, digit) {

                  num += ''

                  if (num.length < digit) {

                    num = '0' + num

                  }

                  return num

                }

                

                var yyyy = toTwoDigits(year, 4)

                var mm = toTwoDigits(month, 2)

                var dd = toTwoDigits(day, 2)

                var ymd = yyyy + "-" + mm + "-" + dd;

                

                document.getElementById("date").value = ymd;

            }

            /* 画像表示 bodyのonloadで呼び出すことでiPhoneに画像表示させる */

            /* strfileId=GoogleドライブのURLID */

            /* strElementId=IMGタグに指定するID */

            function imgDisplay(strfileId,strElementId) {

               const fileId = strfileId;

               const url = google.script.run

               .withSuccessHandler(base64Data => {

                  const img = document.getElementById(strElementId);

                  img.setAttribute("src", "data:image/png;base64," + base64Data);

               })

               .withFailureHandler(console.error)

               .getBae64Image(fileId);      

            }

            /* 記録ボタン押下後のメッセージ(押せたのかわかりにくいので表示させる) */

            function saveMsg(){

               alert("お疲れさまでした!")

            }

    </script>

    <script type="text/javascript">var submitted = false;</script>

    <!-- 記録ボタンタップ後の画面遷移 -->

    <iframe name="hidden_iframe" id="hidden_iframe" style="display:none;" onload="if(submitted){window.location='https://docs.google.com/spreadsheets/d/spreadsheetnoIDspreadsheetnoID/edit#gid=123456789';}"></iframe>

  </body>

</html>


【form.css.html】

<style>

* {

    font-family: 'Montserrat', Arial, Helvetica, sans-serif;

}


main {

    width: 100vw;

    margin: auto;

    color: #000;

}


/* タップしたときの青い四角を消す */

*:focus {

  outline: none;

}


/* 一番上のタイトルの文字 */

div.maintitle {

    font-size: 75px;

    font-weight: bold;

    text-align: center;

    margin-bottom: 70px;

}


/* 項目名の文字 */

span.title {

    font-size: 55px; 

    margin-left : 30px;

    margin-right : 30px;

}



/* 項目のアイコン */

img.TitlePic {

    width: 70px;

    height: 70px;

    margin-left : 30px;

    margin-right : 30px; 

}


/* 日付 */

input.CalIphone {

    width: 340px;

    font-size: 65px;

    margin-bottom: 60px;

    background-color: transparent;

    border-width: 0px 0px 0px 0px;

    vertical-align:12px;  /* inputやselectがちょっと下にずれる問題の対応 */

}


/* 昨日今日ボタン */

span.dateChange {

    font-size: 45px;

    margin-left : 20px;

    margin-right : 20px; 

    margin-bottom: 60px;

    padding: 10px 30px;

    vertical-align:20px;  /* inputやselectがちょっと下にずれる問題の対応 */

    background-color: #dcdcdc;

}


/* 跳び方の種類プルダウン */

select.SelIPhone {

  -webkit-appearance: none; /* セレクトボックスのデフォルトスタイルを無効化 */

  -moz-appearance: none; /* セレクトボックスのデフォルトスタイルを無効化 */

  appearance: none; /* セレクトボックスのデフォルトスタイルを無効化 */

    width: 740px;

    font-size: 65px; 

    margin-bottom: 60px;

    background-color: white;

    border-width: 0px 0px 0px 0px;

    vertical-align:12px;  /* inputやselectがちょっと下にずれる問題の対応 */

}


/* プルダウンのダミー矢印 */

span.yajirushi {

    font-size: 65px; 

    margin-bottom: 60px;

    vertical-align:12px;  /* inputやselectがちょっと下にずれる問題の対応 */

}



/* 回数 */

input.NumIphone {

    width: 155px;

    font-size: 65px;

    margin-bottom: 60px;

    border-width: 0px 0px 0px 0px;

    vertical-align:12px;  /* inputやselectがちょっと下にずれる問題の対応 */

}


/* 回数の「回」の文字 */

span.NumText {

    font-size: 40px;

    margin-bottom: 60px;

    border-width: 0px 0px 0px 0px;

    vertical-align:12px;  /* inputやselectがちょっと下にずれる問題の対応 */

}


/* 記録閲覧ボタン */

input.BtnRecord {

    -webkit-appearance: none;    /* inputボタンのデフォルトスタイルを無効化 */

    height: 180px;

    font-weight: bold;

    text-align: center;

    font-size: 55px;

    margin-top: 410px;

    margin-left: 155px;

    color: #ffffff;

    background-color: #5a70c3;

    border-width: 0px 0px 0px 0px;

}


/* 記録ボタン */

input.BtnSave {

    -webkit-appearance: none;    /* inputボタンのデフォルトスタイルを無効化 */

    height: 180px;

    font-weight: bold;

    text-align: center;

    font-size: 55px;

    margin-top: 410px;

    margin-left: 440px;

    color: #ffffff;

    background-color: #5a70c3;

    border-width: 0px 0px 0px 0px;

}


/* 項目のアイコン */

img.MacchoPic {

    width: 140px;

    height: 140px;

    margin-top: 450px;

    margin-left: 20px;

}


</style>


Googleドライブの画像ファイルをiPhoneで表示

アプリ画面にアイコンを表示するためにGoogle Driveに画像ファイルを

置いて<IMG>タグで表示しようとしたんですがiPhoneだと

一筋縄ではいかないようで。


GASで公開したWebサイトにGoogle Drive上の画像ファイルを表示できない

上のページのコードを参考に、imgDisplay(strfileId,strElementId)という

ファンクションを作っています。

form.htmlのbodyタグのonloadでGoogleドライブの画像IDとIMGタグを

指定すればhtml側で画像表示できるよう、コードを変えてみました。


画像IDの取り方は以下のページが参考になります。

Google Drive にある画像をimgタグで取得させるURLについて


部品タップ時に出てくる青い枠対応

あとプルダウンをタップしたときに青い枠が出ちゃうんですが、

以下のページのコードを使用して出ないようにしました。

クリックやタップしたときの青い枠や四角を消すCSS


アプリ画面の左下にムキムキアイコンを表示してるんですが

表示してるだけです。タップしたら今までの履歴画面に

飛ばすようにしたいんですが履歴画面をまだ作っていないので…。