teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助画像・ファイル
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]


ブラウザに計算をさせてみよう!:07 多倍長整数ライブラリで桁数制限無しの素数判定

 投稿者:加藤 厚  投稿日:2017年10月18日(水)09時50分2秒 em119-72-193-63.pool.e-mobile.ne.jp
   2の53乗≒九千兆は日常感覚では「無制限」に近いのですが、暗号関連の目的などには不足なため、より大きい数を扱える様々な拡張機能(=多倍長演算ライブラリ)が作成・公開されています※。
※GoogleなどでJavaScript用多倍長演算ライブラリを検索してみましょう。

 ここでは、上限値の制約の本質的改善を目的として、多倍長整数ライブラリであるbigint.jsを利用するスクリプトを作成します※。
http://mmua.html.xdomain.jp/bak/
※今回のスクリプトの作動には↑上のURLのweb頁からダウンロードした圧縮ファイル(js-math-bigint-master.zip 約6KB)から展開したライブラリbigint.js(Dan Kogai, 2014)が同一フォルダ内に必要です(下の画像:上側参照)。
<form>候補
  <input type="text" size="32" value=100160063>
  <input type="button" value="実行" onClick="判定()">

  <input type="text" size="44">
</form>
<script src="bigint.js"></script>
<script>  //<form>中の
=breakは改行記号@web頁
function 判定(){
  被除数=bigint(document.forms[0].elements[0].value);除数=bigint(2)
  while(被除数.mod(除数)!=0){
    除数++;if(Math.sqrt(被除数)<除数)除数=被除数
  }
  結果=被除数+"="+除数+"x"+(被除数.div(除数))
  document.forms[0].elements[2].value=結果
}
</script>


 前回のスクリプト(値確認付素数判定.htm)との機能上の相違は①ライブラリbigint.jsの組み込み(</form>の次の行)、②被除数と除数のbigint(値)形式での代入、③剰余の被除数.mod(除数)形式・除算の被除数.div(除数)形式での指定※の3点です(不要なif()alert()行は削除)。
※bigint用には値をx=bigint()、y=bigint()の形式で代入の上、+はx.add(y)、-はx.sub(y)、*はx.mul(y)、/はx.div(y)、%(剰余)はx.mod(y)と指定。

 コピペして素数判定@多倍長整数.htmとして保存したらブラウザにD&Dし、候補に9007199254740995を入力の上実行ボタンをクリックしてみましょう。今度は(前回06の結果とは異なり)下の画像:下側に示した正しい結果「5で割り切れる=素数ではない」が表示されるハズです(1の桁が5の整数は当然5で割り切れます)。


 
 

ブラウザに計算をさせてみよう!:06 本質的な改善とあまり意味のない「改善」

 投稿者:加藤 厚  投稿日:2017年10月12日(木)11時49分59秒 em1-115-198-84.pool.e-mobile.ne.jp
   05のスクリプトの初期値100160063の素数判定は一瞬(1秒未満)で終わることでしょう。では、1の桁の3を9(=100160069)にして実行ボタンをクリックしてみてください。環境にもよりますが、出力欄に100160069=100160069x1(つまり素数)と出力されるまで若干(十秒程度)の時間が掛かることでしょう。そして、素数の場合の処理時間は桁が1増すごとに10倍ずつ増えてゆきます(4桁増えたら約一万倍)!

 これまでのスクリプトの「割り切れないなら除数=被除数になるまで除数+1」という素朴な手順は(実は)大きな無駄を含んでいます。100を例にするとその約数は順に2,4,5,10,20,25,50、そして各約数は2x50,4x25,5x20のように10=√100の上下で対を成します。この性質を踏まえれば、nの約数の検討は√nまでで十分、そこまでに約数がなければその先にも約数はありえずnは素数なのです。

 そこで、05のスクリプトのwhile(被除数%除数!=0)除数++の1行を以下の3行に書き換えます({から}までが一組の指示)。
  while(被除数%除数!=0){
    除数++;if(Math.sqrt(被除数)<除数)除数=被除数
  }
 つまり、除数の値が被除数の平方根を超えたら(それ以上の値は無視して)被除数を除数に代入、被除数%除数==0なのでwhile終了です。

 書き換えた内容を素数判定改.htmというファイル名で保存したらブラウザにD&Dし、初期値を100160069に変えて実行ボタンをクリックしてみましょう。100160069=100160069x1という結果が、今度は一瞬(1秒未満)で表示されるハズです。

 また、JavaScriptには標準機能で処理できる値は9007199254740992(2の53乗)までという制約があります。そこで不適切な入力値に対しその旨表示する機能を追加したのが以下のスクリプトです:
<form>
  候補<input type="text" size="16" value="9007199254740995">
  <input type="button" value="実行" onClick="判定()">
  <input type="text" size="36">
</form>
<script>
function 判定(){
  被除数=document.forms[0].elements[0].value;除数=2
  if(被除数<2||9007199254740992<被除数)alert("値が不適切!")
  while(被除数%除数!=0){
    除数++;if(Math.sqrt(被除数)<除数)除数=被除数
  }
  結果=被除数+"="+除数+"x"+(被除数/除数)
  document.forms[0].elements[2].value=結果
}
</script>

 2未満(素数は2から)や上限を超える値には注意を表示した上で処理しますが、下図の通り結果は誤りで「有意味な改善」とは言えません。

 

ブラウザに計算をさせてみよう!:05 用紙(form)を使って値を入力

 投稿者:加藤 厚  投稿日:2017年10月 9日(月)12時00分1秒 em1-115-195-36.pool.e-mobile.ne.jp
   これまでのスクリプトでは、処理する値(例:被除数、小さい数)の変更には.htmファイルの書き換えが必要でした。様々な値の処理を連続して行うにはこれでは不便、「欄に入力した値をボタンのクリックで処理」という使い勝手の方がずっと便利です。

 そのために必要な入力欄と実行ボタン、ついでに出力欄を追加した素数判定の手順の一例が以下のスクリプトです:
<form>
  候補<input type="text" size="12" value="100160063">
  <input type="button" value="実行" onClick="判定()">
  <input type="text" size="30">
</form>
<script>
function 判定(){
  被除数=document.forms[0].elements[0].value;除数=2
  while(被除数%除数!=0)除数++
  結果=被除数+"="+除数+"x"+(被除数/除数)
  document.forms[0].elements[2].value=結果
}
</script>

 コピペして入力値の素数判定.htmというファイル名で保存したらブラウザにD&Dし、実行ボタンをクリックしてみましょう。下の画像の結果が表示されるハズです。

 <form>から</form>までの5行で、ブラウザの起動画面に示される文字列、1行入力欄、ボタン、出力欄を指示しています(form=用紙)。

 type="text"で一行欄(inputとありますが入出力「両用」)を、type="button"でボタンを用紙に設定します。sizeは(半角の文字数で)欄の長さの指定、valueはtextでは初期値、buttonではボタンの名前の指定で、onClickでボタンがクリックされた時に何をするか(今回はfunction 判定()の実行)を指定します。

 <script></script>ではfunction(関数・機能)が1つ指定され、その処理の内容は(被除数の指定及び結果の出力の部分を除いて)01・02の素数判定.htmと同一です。被除数に代入される値と結果を代入=出力する場所で使われているdocument(中略)valueという長々しい表現はdocument(=ブラウザ画面)のforms[0](=最初のform)のelements[n](=n番目の要素)のvalue(値)という指定で、具体的には被除数には用紙の最初(n=0)の要素である一行欄の値(初期値のままなら100160063)が代入され、また結果は3番目(n=2)の要素である一行欄に代入=出力されます(JavaScriptでは順番は0から数え始めます。ちなみに、2番目(n=1)の要素はボタン)。

 つまり、このスクリプトでは、計算処理を1つの関数とし、用紙の入力欄に指定された値をその関数で処理して結果を用紙の出力欄に代入する、という流れで仕事が指示されています。

 

ブラウザに計算をさせてみよう!:04 素朴に求める最大公約数と最小公倍数

 投稿者:加藤 厚  投稿日:2017年10月 5日(木)10時55分2秒 em1-115-196-172.pool.e-mobile.ne.jp
   小学校で、連除法(すだれ算、はしご算‥)などで求めたことを思い出す人も多いことでしょう。実際的な意味まで説明してくれる先生は少ないかもしれませんが、整数aとbの最大公約数・最小公倍数は例えば以下の現実場面に該当します:最大公約数は「a×bcmの長方形の壁に隙間無く敷き詰められる最大の正方形タイルの一辺の長さ」、最小公倍数は「a×bcmの長方形タイルを同じ向きに隙間無く敷き詰めて作れる最小の正方形の一辺の長さ」。(下の画像:上側参照)

 最大公約数は整数aとbの両者を割り切れる最大の整数ですから、素朴に考えれば01・02の素数判定のスクリプトの条件を「aもbも割り切れる値まで小さい方の値-1を繰り返す」にするだけです。また、2つの整数の最小公倍数は、試し割を繰り返さなくても「aとbの最小公倍数=a×b/最大公約数」で求められます。

 以下のスクリプトはその手順の一例です:
<script>
  小さい数=45;大きい数=54;候補=小さい数
  document.write(小さい数+"と"+大きい数+":")
  while(小さい数%候補!=0||大きい数%候補!=0)候補--
  document.write("最大公約数="+候補+" ")
  document.write("最小公倍数="+小さい数*大きい数/候補)
</script>

 コピペして最大公約数など.htmというファイル名で保存したらブラウザにD&Dしてみましょう。下の画像:下側の結果が表示されるハズです。

 今回の手順では、まず「小さい数」の値を「候補」に代入し、その値が小さい数と大きい数を共に割り切れるまで候補の値-1を繰り返しています。新しい指示の表現は1つ(||)のみで、その意味は「あるいは=or=論理和」つまり2つの剰余のいずれかが0でない間(=2つとも0になるまで)」という条件指定です。

 具体値で辿っていくと、まず候補=45で小さい数(=45)は割り切れますが大きい数(=54)は割り切れないので候補--で44、これでは両数とも割り切れないので43、(中略)9で初めて両数とも割り切れるので文字列"最大公約数="+9+" "と"最小公倍数="+270を画面表示※。
※45x54/9=270(補足の②も参照:45=9x5、54=9x6。最小公倍数=最大公約数(共通要素の3x3)×独自要素(5x6)=9x30=270)


補足4:「あるいは」と「かつ」など

①あるいは=or=論理和は||、かつ=and=論理積は&&。

②連除法  3) 45 54
      ─────
      3) 15 18    最大公約数=3x3=9
      ─────
        5  6    最小公倍数=3x3x5x6=270


 

ブラウザに計算をさせてみよう!:03 素数判定を繰り返せば素因数分解

 投稿者:加藤 厚  投稿日:2017年10月 2日(月)09時25分2秒 em119-72-199-63.pool.e-mobile.ne.jp
   01・02の手順で可能なのは素数か合成数かの判定でした。剰余が最初に0になった時点の除数は確かに「被除数の素因数」の1つです。しかし、その時点の商が合成数(素数の積)なら素因数分解としてはまだ途上、商が素数になって初めて完了です。従って、ブラウザに素因数分解をさせるには、被除数を割り切る除数を順に求めて記録しつつ、その商を次の被除数にして商が素数になるまで素数判定を繰り返す「手順」の指示が必要です。

 以下のスクリプトはその手順の一例です:
<script>
  被除数=223092870;結果=被除数+"="
  while(被除数!=1){
    除数=2
    while(被除数%除数!=0)除数++  //{}は無くてもOK
    結果=結果+除数+"x";被除数=被除数/除数
  }
  document.write(結果.slice(0,結果.length-1))  //補足の③参照
</script>

 <script>から</script>までの9行をコピーしてメモ帳などに貼り付け、素因数分解.htmとして保存したらそれをブラウザにD&Dしてみましょう。下の画像のような結果が表示されるハズです。

 今回の手順では、まず被除数と共に結果という変数を設定しています。これは素因数分解の過程を「被除数=除数x除数x除数x‥」という文字列として記録するためのものです。

 次行のwhileの{から4行下の}までの一組の指示によって、被除数が1になるまで以下の手順を繰り返させています:
「剰余が0になる(=割り切れる)まで除数を2から1ずつ増やす」→「割り切れた時の除数と"x"を結果に追加し、商(=被除数/除数)を次の被除数に代入する」

 商が素数になるとその次の商は1(02の例を参照)、従って被除数==1となるためwhileの条件は満たされず、その時点の結果の文字列から末尾の一文字(=過剰な"x")を削除した部分がブラウザに表示されます(結果.slice(0,結果.length-1)=結果の文字列の最初(0)~長さ-1文字まで)※。
※「元値=被除数として除数=2;if(元値!=被除数)結果=結果+"x"」が別案。

 1234321、123454321、12345654321などの適当な数を被除数にして素因数分解し、結果を電卓などで確認してみましょう。


補足3:文字列関連の指示など

①引用符("")で括った数字、文字、記号は文字列として扱われます。
②内容が数値の変数に文字列(例:"="、"x")を結合すると全体が文字列になります(123+"456"→"123456" vs. 123+456→579)。
③○.slice(開始位置,終了位置)で○の内容の一部を抜き出します(○.lengthが○の内容の長さなので、その値-1で最後の1文字が削除されます)。


 

ブラウザに計算をさせてみよう!:02 基本は「基準達成まで処理を反復」

 投稿者:加藤 厚  投稿日:2017年 9月28日(木)18時32分37秒 em119-72-196-142.pool.e-mobile.ne.jp
   01でブラウザに与えた以下の5行の指示はどんな「手順」だったのでしょうか?
<script>
  被除数=100160063;除数=2
  while(被除数%除数!=0)除数++
  document.write(被除数+"="+除数+"x"+(被除数/除数))
</script>

 最初の<script>と最後の</script>は「手順」の始まりと終わりの決り文句です(script=台本・脚本)。

 まず、被除数=100160063と除数=2で変数「被除数」と「除数」への値の代入を指示します(;は指示の区切り)。

 次のwhile(被除数%除数!=0)除数++は「()内の条件が成り立つ間()に続く処理を繰り返しなさい(=不成立なら処理はせず次の指示へ)」という指示です(while=~の間)。条件内の%は剰余(割算の余り)、!=は≠なので、被除数%除数!=0 は「被除数÷除数の余りが0でない間」(=割り切れるまで)、()に続く処理である除数++は「除数の値を1ずつ増やしなさい」という指示です。

 そしてdocument.write()は()内をブラウザの画面に表示しなさいという指示です(数値に+"="※などすると全体が文字列になります)。
※文字である等号("=")を数値の後ろに付ける(+)。

 具体値で辿っていくと、被除数に対し除数2では余り≠0 なので+1して3、3でも余り≠0なので4(中略)、除数10007で初めて余り=0になるので次行に進み、被除数、除数と被除数/除数の3値を文字の"="と"x"とで結合した100160063=10007x10009が画面表示されます。

 ここで、被除数に素数を指定(例:被除数=10007)して適切なファイル名(例:被除数=10007.htm)で保存の上ブラウザにD&Dしてみましょう。被除数が素数なら除数++を繰り返しても剰余≠0が続き、除数=被除数になって初めて商=1で割り切れるため、ブラウザには10007=10007x1 と表示されます(下の画像参照)。この結果は、被除数が(1とその数以外に約数を持たない)素数であることを示しています。


補足2:数値関連の指示及び本資料でのscriptの書き方※など

 ①=は(「等しい」ではなく)代入です。従って、例えば除数=除数+1という表現もOKです(意味は除数++と同じく「値を1 増やす」)。
 ②「等しくない」が!=であるのに対し、「等しい」は==です。
 ③加減乗除(+-*/)に加えて、剰余(%)が使えます。
※本資料では、「正式」な書き方に拘らず、無くても大丈夫な表現は省略しています(例:行末の;)。また「手順」は効率よりも単純さ≒理解し易さを重視します(例:除数++を被除数の平方根で打ち切らない)。


 

ブラウザに計算をさせてみよう!:01 手順の指示はスクリプトで

 投稿者:加藤 厚  投稿日:2017年 9月25日(月)14時15分0秒 em119-72-199-112.pool.e-mobile.ne.jp
   ネット検索やブログ閲読などで日常的に使っているブラウザは「手順」さえ指示してやれば高速&高機能な計算機としても使えます。

 例えば、ある数が素数(=1とその数以外に約数を持たない正の整数)かどうかを調べたいとします。63なら63=3x21なので「素数ではない(=合成数)」と簡単に判断できますが、100160063だったらどうでしょう。奇数なので2では割り切れない、各桁の値の和が17なので3でも割り切れない、下二桁=63が4の倍数ではないので4でも割り切れない‥という具合で暗算では判断困難、電卓で÷6、÷7‥と試みても割り切れる値にはなかなか辿りつきません。

 100160063は10007で割り切れるので、素数ではなく合成数です。でも、割算を延々と繰り返すような作業は面倒なので自分ではしたくありません。そこで以下のように「手順」を書き並べ、そのファイルをブラウザにdrag & drop(以下、D&D)すると、今回の処理=数万回程度の試し割りなら1秒以内で実行してくれます。
<script>
  被除数=100160063;除数=2
  while(被除数%除数!=0)除数++
  document.write(被除数+"="+除数+"x"+(被除数/除数))
</script>

 <script>から</script>までの5行をコピーしてメモ帳などに貼り付け、スクリプトの一例.htm※というファイル名で保存したらそれをブラウザにD&Dしてみましょう。下の画像の結果が表示されるハズです。
※.txtではなく.htmとして保存(文字コードはUTF-8がオススメです)。

 変数名に漢字(例:被除数、除数)が使えて用語も簡単な英語(例:script、while、document、write‥)、エディタ(メモ帳など)で書けて身近なブラウザで動く(従ってOS不問)といった点で、この「手順」の書き方(JavaScriptといいます)は近頃話題のプログラミングをかじるにも最適な言語の1つと考えます※。
※ただし、小学校などでの利用が想定されているScratchや文科省提供の「プログラミン」とは異なり、JavaScriptは(見ての通りの)テキスト言語です。

 それでは、これから素因数分解、最大公約数と最小公倍数、円周率といった懐かしい(?)計算を例にしながらJavaScriptの書き方を順を追って紹介していきます。


補足1:I.E.におけるスクリプトの「実行制限」の回避方法

 Windows 8.1まで標準ブラウザだったInternet Explorerは、スクリプトのhtmファイルをD&Dしても「このWebページは‥」という実行制限メッセージを表示し、許可ボタンをクリックするまで実行しません。
 毎回のクリックが面倒なら以下の1行を<script>の上に追加しましょう。
<!-- saved from url=(0008)about:internet -->


 

3月からの連載(?)内容に若干の加筆を行って‥

 投稿者:加藤 厚  投稿日:2017年 4月25日(火)17時43分35秒 em119-72-195-45.pool.e-mobile.ne.jp
  「簡単に楽しむ電子書籍」を冊子↓※にまとめました。
http://mmua.html.xdomain.jp/kato/pdf/kantan_e-book.pdf
※kantan_e-book.pdf(2.96MB)

リンクのクリックで pdfを開き、PCなどに保存※の上、全画面見開き閲読#してもらえたら幸いです。
※方法はブラウザによって異なります(IE・FFならフロッピーの、Chromeならダウンロードのアイコン)。
# Kinoppy, SumatraPDFなどで‥
 

簡単に楽しむ電子書籍:15 画像を圧縮した書庫ファイルの閲読: ZipPla

 投稿者:加藤 厚  投稿日:2017年 4月21日(金)10時20分2秒 em1-115-197-27.pool.e-mobile.ne.jp
   「画像化した頁を圧縮した書庫ファイル」を閲読するポータブルツールとしてはZipPlaがオススメです。
https://sites.google.com/site/riostoolbox/
http://www.vector.co.jp/soft/winnt/art/se513079.html

 ZipPlaはRio's Toolboxさん作成のWindows用書庫リーダーで、DLしたZipPla_x.x.x.x.zip(今回は1.6.3.8で2MB強)をWクリックしてUSBメモリなどに展開します。

 [送る]の選択肢にZipPla.exeを登録してzipファイルを開き[F11]キーを押すと、全画面見開き表示に切り替わります(左綴じ/右綴じの切り替えは[L]/[R]キー、次/前頁は[→]/[←]など)。

 このツールの最大の長所は[Z]キーによる見開き⇔拡大の表示切り替えです。見開きで全体の様子を把握し、「ここを拡大したい」という所で[Z]キーを押してみましょう。見開き表示を維持したまま、下図の例なら右側の図9の細かい内容が明瞭に読める表示が得られます※。
※拡大表示での画像移動はポインタの移動(スライド)で。

 ZipPlaはrarを含む多数の圧縮形式に対応しているので、zip以外の書庫ファイルもとまどうことなく楽しめます。

 さて、今回の紹介は以上です。内容がWindows用の無料ポータブルツール中心だったのは、それが筆者の活動と関心の領域であり、より確実な情報提供ができると思われたからです。その偏りを意識しつつ、この領域について、また他の領域について、一層詳しい皆さんからの補足・補完を期待してこの連載(?)の結びとします。
 

簡単に楽しむ電子書籍:14 PDFの画像化と圧縮: PDF-XChange Viewer Portable

 投稿者:加藤 厚  投稿日:2017年 4月18日(火)14時45分0秒 em119-72-199-81.pool.e-mobile.ne.jp
   PDFの「レイアウトの再現」という長所(09参照)を最大限追求したいなら「画像化」も選択肢の1つになりえます。

 他方、画像化するとテキスト(文字)情報が失われるため、語句の検索やlink(=URL)からのネットアクセスはできなくなり、またファイルサイズもPDFより大きくなってしまいます。

 このように、PDFファイルの画像化は短所が多いため、それを自ら行う必要性は少ないことでしょう。しかし、画像を圧縮した書庫ファイルは、実際には多数存在します。従って、その仕組みと閲読方法に関する知識・技能の紹介には一定の価値がありそうです。

 PDFの作品を画像化するポータブルツールとしてはPDF-XChange Viewer Portable(Windows XP以降で作動)がオススメです。
http://portableapps.com/apps/office/pdf-xchange-portable

 Tracker Software Productsという会社の製品(多機能PDF viewer)の機能限定無料版のポータブル版で、DLしたPDF-XChangeViewer-Portable_x.x.x.x.paf.exe(今回は2.5.318.1で8MB弱)をWクリックして 100MB程度以上の空き容量のあるUSBメモリなどに展開します※。
※「インストール」の実態が「展開」なのは10のLibreOffice Portableと同様。

 12の後半で紹介した方法で[送る]の選択肢にPDF-XChangeViewer-Portable.exeを登録してPDFファイルを送り、下図のように[イメージへエクスポート]を選択して①イメージの種類(例:JPEG/PNG)、②保存先のフォルダ(例:デスクトップのtest)、③ファイル名(例:<Page Number>)を指定して[エクスポート]をクリックすると、各頁の画像が連番をファイル名として②のフォルダに保存されます。

 全頁の正しい画像化を確認したら、②のフォルダを右クリックして[送る]から[圧縮(zip形式)フォルダー]を選択すれば、フォルダ名.zipの圧縮ファイルがデスクトップに作成されます。
 

簡単に楽しむ電子書籍:13 「作品」のアップロード(UL)と紹介

 投稿者:加藤 厚  投稿日:2017年 4月14日(金)16時08分1秒 em117-55-68-157.emobile.ad.jp
   「作品」ができたら、それを紹介して興味・関心のある皆さんに楽しんでもらいましょう。そのために必要なのは、ネット上の適切な場所へのファイルのアップロード(UL)とそれを閲読・DLできるlink(=URL)の紹介です。

 UL先は各自のサーバースペースがベストですが、それが無くてもGoogleのGoogle Drive、MicrosoftのOneDriveあたりなら当面「サービス終了」は無く、安心して使えそうです※。
※Gmailやhotmail/Outlookのアカウントを持っていれば、そのaddressとpasswordで利用可能です。

 Google Drive+Windows PCの場合、次行の頁>[Googleドライブにアクセス]>ログイン操作>[マイドライブ]>[ファイルをアップロード]>ファイルを選択して[開く]でULが実行されます。
https://www.google.com/intl/ja/drive/

 Microsoft OneDrive+Windows PCの場合、次行の頁>[サインイン]>ログイン操作>ドキュメント>ファイルをD&DでULが実行されます。
https://onedrive.live.com/about/ja-jp/

 閲読・DL用のlinkは以下などの手順で確認・取得します(下図を参照):

 Google Drive+Windows PCの場合、ULしたファイルを右クリック>[共有可能なリンクを取得]>ポップアップの3行目のURLをクリック(→反転)して[Ctrl]+[C]でコピー>エディタを起動し[Ctrl]+[V]でpaste。

 Microsoft OneDrive+Windows PCの場合、ULされたファイルを左クリック>右側の[アクセス許可の変更]を左クリック>上から3番目の「このリンクを知っていれば(中略)閲覧できます。」の枠内のURLをクリック(→反転)してコピー※>エディタを起動し[Ctrl]+[V]でpaste。
※右クリック>[コピー](あるいは[Ctrl]+[C])

 これらのlink=URLをmailで、また各自のblogや web頁で公開すれば「紹介」は完了です。
 

簡単に楽しむ電子書籍:12 PDFの見開き閲読-2: SumatraPDF

 投稿者:加藤 厚  投稿日:2017年 4月11日(火)10時20分0秒 em119-72-193-205.pool.e-mobile.ne.jp
   PDFをフルスクリーンで見開き閲読できるポータブルツールとしてはSumatraPDFがオススメです。
http://www.sumatrapdfreader.org/free-pdf-reader-ja.html

 Krzysztof Kowalczykさん作成のWindows用PDFリーダーで、軽量・高速・単一ファイル(SumatraPDF.exe)です。下図(上側)の状態で全画面表示を選択(あるいは[Ctrl]+[Shift]+[L])すれば、見開き状態のまま全画面表示で閲読できます※。
※全画面表示状態で[Ctrl]+[1]/[2]/[3]を押すと「一部はみ出し」による一定の拡大表示が可能([Ctrl]+[0]で元に戻る)。また[Z]キーを押すごとに表示切替。ちなみに、SumatraPDFはePubも開けます。

 さて、これまでポータブルツールを「実行ファイル(.exe)本体のWクリックで起動>作品ファイルのD&D」という最も素朴な方法で利用してきました。しかし、Windowsの場合、右クリックメニューの[送る]を活用すればより少ない操作での利用が可能です。

 右クリックメニューの[送る]の選択肢としてツールを登録する方法は以下の通りです(下図:下側も参照):
 ①実行ファイル(例:xyz.exe)を右クリックしてショートカット(例:xyz.exe - ショートカット)を作成する。
 ②ショートカットをD&Dでデスクトップに移動し、名前中の不要部分(例: - ショートカット)を削除する。
 ③エクスプローラを起動し、そのアドレス欄にshell:sendtoと入力の上[Enter]して[送る]の項目=選択肢を一覧表示する。
 ④②のショートカットを一覧表示の空白部分にD&Dすると[送り先]の選択肢にxyz.exeが追加される。

 以上の登録が済んでいれば、例えば作品abc.pdfをツールxyz.exeで開くには「abc.pdfを右クリック>[送る]の選択肢の一覧からxyz.exe(←その実体はショートカット)を選択」でOKです。
 

簡単に楽しむ電子書籍:11 PDF の見開き閲読-1: Kinoppy

 投稿者:加藤 厚  投稿日:2017年 4月 7日(金)18時24分24秒 em119-72-193-202.pool.e-mobile.ne.jp
   ほとんどのPCにインストール済みのはずの PDF標準リーダー Adobe Acrobat Readerで表示>ページ表示>見開きページ表示と指定すると、見開き閲読が可能です。ただし、その状態でフルスクリーンモードを指定([Ctrl]+[L])すると[単一ページ表示]に戻ってしまいます。

 PDF の単一頁閲読なら、リーダーを使わずとも Chrome, IE, FireFoxといったブラウザへのD&Dでも可能であり、PDF リーダーにはより高度な機能を期待したいものです。

 ちなみに、09でも言及したように PDFの閲読はKindle(azw 用リーダー)やKinoppy(ePub用リーダー)でも可能で、Kindleの場合、PC 用リーダーをインストールするとライブラリのドキュメントに作成される My Kindle Contentというフォルダにコピーした PDFファイルはKindleのライブラリに表示され、Wクリックで閲読できます(下図:上側参照)。[F11]、(余白があったら) [Ctrl]+[1]/[2]/[0]などしてみましょう。
https://www.amazon.co.jp/kindle-dbs/fd/kcp

 Kinoppy の場合、PC 用リーダーをインストールして起動すると「メイン本棚」の左に示される[Dropbox/ローカルコンテンツ]から[ローカルファイルのインポート…]に進み、閲読したい PDFファイルを選択して[本棚に戻る]をクリックすると本棚に同ファイルが追加され、クリックで閲読できます(07 の第3・4段落及び下図:下側参照)。
http://k-kinoppy.jp/

 しかし、Kindleも Kinoppyも要インストールです。PDF の見開き閲読を実現できるポータブルツールは無いのでしょうか?
 

簡単に楽しむ電子書籍:10 ポータブルツールでもPDF出力は可能

 投稿者:加藤 厚  投稿日:2017年 4月 4日(火)16時23分53秒 em1-115-196-168.pool.e-mobile.ne.jp
   PCに2007以降のWordや互換officeがインストールされていれば、PDF出力は標準機能で可能です。
http://freesoft-100.com/beginner/word-excel-to-pdf.html
https://support.kingsoft.jp/kso/pdf.html

 Officeがインストール済みならそれを使いましょう※。
※「楽な達成」は「ポータブルツールの使用」に優先します(笑)。

 他方、ポータブルツールでもPDF出力は可能です(例:次行の頁のLibreOffice Portable※)。
http://portableapps.com/apps/office/libreoffice_portable
※LibreOffice(Microsoft Office互換でオープンソースの無償オフィス統合環境)のポータブル版

 LibreOfficePortable_x.x.x_MultilingualStandard.paf.exe(今回は5.3.1で115MB)をDLし、Wクリックして1GB以上の空き容量のあるUSBメモリなどに展開します※。
※仏語/独語/韓国語/中国語などが不要なら途中のRemove Extra Languagesをチェック。

 作業中に「インストール」という表現が用いられますが、その実態は「圧縮ファイルの展開」です。メニューなどへの項目追加は無く、LibreOfficePortableフォルダが作られたUSBメモリを別のWindows PCに挿せばそこでの起動が可能(=ポータブル)、そして同フォルダを削除すれば削除完了です。

 LibreOfficePortableフォルダのLibreOfficeWriterPortable.exeをWクリックしてWriterを起動したら、書式>ページで用紙サイズをA5縦に指定し、内容の記述とフォント及び改行(範囲指定後に段落>行間-例:固定の0.60cm)などの指定を行いましょう。下図のようなルビ付、link有効の文書が得られたらファイル>PDFとしてエクスポート※を選べばPDFの出力ファイルが得られます。
※PDFオプションの初期表示で連続見開きが選べます。また、一部の互換officeとは異なり、https:のlinkも正しく設定されます。
 

簡単に楽しむ電子書籍:09 固定レイアウトのPDFで本を作成

 投稿者:加藤 厚  投稿日:2017年 3月31日(金)14時10分2秒 em119-72-195-70.pool.e-mobile.ne.jp
   自分が作るのであれば、納得できるレイアウトと機能を追求したいものです。同時に、より多様なハードウェア(PC, Mac, Tablet, etc.)上で読めることも重要でしょう。

 レイアウトについては、『青空文庫』の書式に限らず、国際電子出版フォーラム(IDPF: International Digital Publishing Forum)が策定したePub、アマゾンのazwなどのファイル形式も、一頁あたりの文字数が変動するリフロー(流し込み)型である限り“不確定”です※。
※これまでの図でも同一内容が頁不同でした(例:03では139頁、04では154頁、05では265頁‥)。

 レイアウトが定まる(従って同じ内容は必ず同じ頁にある)ファイル形式として最も普及しているのはPDF(Portable Document Format)でしょう。PDFであれば、対応するリーダーやブラウザがある限り、ハードウェア※を問わずほぼ同一の表示が得られます(加えてlinkも有効)。
※azw用リーダーのKindle、ePub用リーダーのKoboなども含む。

 他方、固定レイアウトの必然として、スマホなどの小画面ハードウェアでは頁全体の閲読は(文字などが小さくなるため)困難になります。

 ここで「本としての現実的な最小頁サイズ」を考えてみると、下図に示したとおり「せめて文庫本(A6版)か新書版、できればA5版程度は欲しい」というのが筆者の判断です※。
※各判型の対角インチは、文庫本(105x148)が7.14 inch、新書版(103x182)が8.23 inch、A5版が10.11 inch(1 inch=25.4mm)。

 A5版なら、10.1 inchタブレットで1頁、14.3 inch PCで見開き2頁の原寸大表示が可能です。そこで、今回はファイル形式をPDFとし、判型がA5版の本を作成してみます。
 

簡単に楽しむ電子書籍:08 『青空文庫』の書式で「本」を作成

 投稿者:加藤 厚  投稿日:2017年 3月28日(火)16時00分0秒 em119-72-197-166.pool.e-mobile.ne.jp
   これまで「読む」楽しみを取り上げてきましたが、「表現する」楽しみも重要です。そこで、第1回の「01 『青空文庫』再訪」を例として『青空文庫』の書式で本を作成してみます。

 テキストの空白や改行はそのまま表示に反映されます。また、「富田|倫生《みちお》さん」のように指定すると|以降の文字にふりがな(ルビ)が振られます。

 画像とその題目(キャプション)は以下のように指定します:
[#キャプション付きの図1(01_栄養学小史.png)入る]
[#キャプション]図1 [青空 in Browsers]で開いた『栄養学小史』※ [#キャプション終わり]

 ふりがな(ルビ)と画像及びその題目という最低限の指定を追加したテキストファイルをOyaziViewerで開くと、下図のような書籍らしい表示が得られます※。
※スタイルは上から5番目の(Win 8.1 青空 横 見開 游明朝 12)

 ただし、縦書/横書、文字の大きさなどのレイアウト(紙面割付け)の要素は閲読toolの指定まかせ、URLも無効(=クリックしてもネットアクセスしない)になってしまいます※。
※有効・無効も閲読toolによります(例:AIR草紙なら有効)。

 これでは、文字に加えて画像・図表・link(含URL)なども多用しつつレイアウトの再現を重視する「表現」の実現は困難です。
 

簡単に楽しむ電子書籍:07 様々な端末・方法で楽しむ『青空文庫』

 投稿者:加藤 厚  投稿日:2017年 3月24日(金)13時45分40秒 em119-72-196-148.pool.e-mobile.ne.jp
   電子書籍を楽しむ環境としては、PCなど以外にAmazonのKindle、楽天のKoboといった専用端末があります。『青空文庫』の作品の大部分はこれらの専用端末用ストアでも(実は)「0円」で提供されており、無料でDLして専用端末や同等のリーダーで閲読可能です(下図:上側参照)。

 また、様々な端末に対応するePub用リーダーKinoppy (紀伊国屋書店提供)は、ver.3.1.0(2017年2月公開)で『青空文庫』のzipファイルをそのまま閲読できるようになりました。
http://k-kinoppy.jp/

 例えばPC用Kinoppyをインストールして起動すると「メイン本棚」の左に示される([インポート]>)[Dropbox/ローカルコンテンツ]から[ローカルファイルのインポート…]に進み、02でDLしたzipファイル57318_txt_58138:栄養学小史.zipを選択して[本棚に戻る]をクリックすると本棚に同ファイルが示され、クリックで閲読できます(下図:下側参照)。

 画面左端にポインタを近づけると示される[スタイルの設定](本のマーク)をクリックし[ページめくり]で[ブック]を指定すると、04のTxtMiru2に匹敵する「頁めくり」効果つきの見開き閲読が楽しめます。また、[その他の設定](歯車のマーク)の[ダブルクリックで拡大する]もon(右側)にしておきましょう(拡大状態でWクリック→復元)。

 さらに、『青空文庫』の作品を朗読で楽しめるサイトもあります。2017年3月下旬の登録数は約270作品です。
http://aozoraroudoku.jp/
 

簡単に楽しむ電子書籍:06 XHTMLファイルでどこでも「縦書」閲読

 投稿者:加藤 厚  投稿日:2017年 3月21日(火)15時11分13秒 em119-72-192-44.pool.e-mobile.ne.jp
   これまでに紹介したtool中、Windows, Mac, Linuxの全てに対応し、かつ offlineで閲読可能なのは03の③のAIR草紙です。しかし、その使用にはインストール(複数)が必要で、また「無料版」の場合には(txt/zipを除き)閲読できる頁数に制限があります(10頁まで)。

 03の②のChrome用拡張機能は最新のChrome(ver.56)には非対応のようで、筆者(加藤)が試した限りでは動きませんでした(‥たぶんChrome側が進みすぎたのでしょう)。

 極力「簡単」にOS(Windows, Mac, Linux, Android, iOS, etc.)不問で『青空文庫』を縦書で楽しむベストな方法、それは「XHTMLファイルに“文字と行の示し方”を書き込んで、ブラウザで開くこと」です。

 内容としてはCSS(Cascading Style Sheets)の話ですが、具体的には以下の3ステップを行えばOKです。

 ①(02の手順で)今度は57318_58139.htmlをDLし、zipファイルを展開したフォルダに移動します※。
※ここでhtmlファイルをWクリックすると、内容は「横書き&行間無or狭」の書式で開かれます。

 ②htmlファイルをエディタ(例:メモ帳)で開き<body>※を探します。
※<head>‥</head>のブロックの直後に必ずあります。

 ③その<body>を以下の内容※に置き換えて別名(例:57318_58139:栄養学小史縦書.html)で保存します(全角:はファイル名に使用可)。
<body style="writing-mode:tb-rl;line-height:180%;">
※指定の意味:文字をTop to Bottom(上から下=縦書)&行をRight to Left(右から左)に示す。改行は1行の180%(→行間の空白=1行幅の80%)。

 保存したhtmlファイルをWクリック(あるいは右クリック>プログラムから開く>ChromeやIE‥)で開いてみましょう。Chrome(ver.56.x)やIE(ver.11.x)では、下図の表示(縦書&行間広め)が得られます(FF ver.51.xでは「左詰め」状態となり、末尾が表示されてしまいます)。

 この方法であれば、指定に正しく対応するブラウザさえあればPC・Mac、tablet、スマホ‥のいずれでも縦書閲読が楽しめます。
 

簡単に楽しむ電子書籍:05 テキストファイルの閲読tool-3: OyaziViewer

 投稿者:加藤 厚  投稿日:2017年 3月17日(金)16時29分36秒 em119-72-199-87.pool.e-mobile.ne.jp
   表題を本文とは異なる書式で画像のそばに示したいなら、オススメはOyaziViewerです※。
http://www001.upp.so-net.ne.jp/OyaziViewer/
http://www.vector.co.jp/soft/winnt/util/se511187.html
※Martinstagさんご提供の青空文庫ビューア(ポータブル&Windowsのみ対応)。
 ちなみに、初期状態のOyaziViewerでは左クリックと[PgDn]が次頁ヘ、右クリックと[PgUp]が前頁ヘです。

 OyaziViewer1.2.2.zipを展開したフォルダ内のOyaziViewer.exeのWクリックで起動します。起動した窓の中にeiyogaku_shoshi.txtをD&Dし、表示>スタイルで一番下の[青空 縦 見開@MS明朝12]を選び、設定>その他の設定で「背景画像を表示」のチェックを外すと下図の表示が得られます※。
※設定>色設定でボーダーの配色を「薄灰色」にしています。

 縦書きの本文に対し、表題は横書きで画像の下に示されるため「紛らわしさ」は解消します。画像(含写真)を多用した電子書籍に適切な表示形式の一つと言えそうです。その他のスタイル・指定をあれこれ試していけば「納得できる表示」により接近できることでしょう。

 さて、残る課題の「汎用性の確保・拡大」は、次回に紹介する方法(これまで使ってこなかったXHTMLファイルに少し手を加えること)で達成可能です。
 

簡単に楽しむ電子書籍:04 テキストファイルの閲読tool-2: TxtMiru2

 投稿者:加藤 厚  投稿日:2017年 3月14日(火)17時09分16秒 em119-72-195-20.pool.e-mobile.ne.jp
   前回紹介したPageOneはすばらしいtoolですが、以下のように感じる場合があるかもしれません:
 ①「頁めくり」の効果が味気ない。
 ②「キャプション(表題)」の書式が本文と同じでは紛らわしい。
 ③Windows以外、つまりMacやタブレット、スマホでも読みたい。

 ①の「頁めくり」にコダワリたいならTxtMiru2※がオススメです。
http://www.vector.co.jp/magazine/softnews/120229/n1202291.html
http://www.vector.co.jp/soft/winnt/util/se485708.html?ds
※gearsさんご提供の青空文庫ビューア(Windowsでのみ作動)

 PageOneと同様、DLしたTxtMiru2.0.zipを展開したフォルダ内のTxtMiru2.exeのWクリックで起動します。

 起動した窓の中にeiyogaku_shoshi.txtをD&Dしたら[←]キーなどを押してみましょう。秀逸な「頁めくり」効果つきの下図のような閲読が楽しめます※。
※ツール>設定>背景画像のbackground.pngが「左頁明・右頁暗」なので、自作の「両頁明」の画像を背景にしています。

 ただし、TxtMiru2では「表題の書式が本文と同じ」という問題点は残り、さらに「画像とその表題が離れて表示される」という新たな問題が発生します。また「汎用性不足」という問題点は残ったままです。
 

レンタル掲示板
/2