このブログ 気がつけば一ヶ月間uploadしていませんでした この間に、島原でのライブ、インド Chennaiでのライブ、そして先日の TAVI関連学会である J-TVTなど色々とありました
何しろ暑くて暑くて とても気力が追いつかなかったのです それと何を思い立ったか、急に高等数学の勉強を始めたのです 自分自身の高校時代、理科系の数学は、数IA, IBそして数IIBだったと思うのです いわゆるゆとり世代のはるか前で、厳しく受験勉強を迫られていた時代です
数学の教育課程の中には、もちろん線形代数、三角関数、複素数などはありますし、ベクトルもあったと思います しかし中心は微積分だったと思います 決定的に欠けていたのは行列なのです 考えてみれば行列の学習を全くしたことが無いのです なんで今さら行列を? と思われるかも知れませんが、行列の考えとか、計算とかは現代世界で必須のものなのです 気がついてみれば僕には行列を理解していない、という根本的欠陥があったのです
それで Amazonで色々探し、一冊200円程度の中古の「わかりやすい」シリーズの数学本を購入して勉強を始めました 非常に平易に書かれていて僕のような老境の者にも理解できます 理解はできるのですがすぐに忘れていくのです 今も折角覚えた行列の掛け算のやり方忘れているのです あああああ まあ繰り返して学習していくしかありませんね
こんなことが医療と何の関係があるの? と言われる方も多いでしょう でもね、何処で何が関係しているのかなんて分からないのですよ 何より知的欲求が僕にそれを強いるのです それだけで十分でしょう もっとも僕には下心があります それはこれらの高等数学の勉強は自分のプログラミング・スキルの向上に絶対に役立つだろう、という裏付けがあるのです 現実に今話題の、例の碁の世界チャンピオンを破った Googleの人工知能、あれの理解には絶対に行列が必要なのです
そんなこんなで、ここ数日間 再びプログラミングに向かっているのです 色々と夢の中でも考えてきました html文書をどのようにコンポーネント化できるか? という命題です もちろんこれには Javascript frameworkである Reactや、AngularJSなどたくさんあります しかし、それらをゼロから勉強するのはとても困難です 少なくとも僕には困難です せいぜい jQueryぐらいです
そこで、PHPの classを用いて何とかできそうだ、という予想の下にやりました 何をしているか? と言えば 鎌倉ライブのプログラム作成および公開用のホームページ作成なのです これをReal Timeにon-lineでプログラムの更新ができるようにしたいのです しかも権限を持った人間は複数人が更新を可能とする、というシステムの構築です
まず行ったのは、プログラムの骨子作成なのです ここにはどうしても htmlという文章論理構造記述言語でしかあり得ません その第一版は以下のようなものです
<div class="container">
<h1 class="text-center text-danger">EVTセッション第一日目 (12月17日[土曜日])</h1>
<div class="row">
<div class="col-lg-11">
<div>
<div class="session_title">
<form method="post" action="db_entry/evt/evt01.php">
<button type="submit" class="session_title" name="sessionNo" value="1">
<div>
<div class="fleft">
<?= _Q(mb_substr($rows[1]['begin'], 0, 5)); ?>
-
<?= date("H:i" , strtotime($rows[1]['begin']) + $rows[1]['duration']*60); ?>
</div>
<div class="fright">
<?= _Q($rows[1]['sessionTitle']); ?>
</div>
<div class="fclear">Session Co-Sponsor:
<?= _Q($rows[1]['cosponsor']); ?>
</div>
<div>Venue:
<?= _Q($rows[1]['venue']); ?>
</div>
</div>
</button>
</form>
<div class="col-lg-10 session_sub">
<div class="subsession">
<form method="post" action="db_entry/evt/evt01.php">
<button type="submit" class="subsession_button" name="sessionNo" value="2">
<div class="fleft">
<?= _Q(mb_substr($rows[2]['begin'], 0, 5)); ?>
-
<?= date("H:i" , strtotime($rows[2]['begin']) +$rows[2]['duration']*60); ?>
</div>
<div class="fright">Session Subtitle:
<?= _Q($rows[2]['sessionTitle']); ?>
</div>
<div class="fclear">Chair:
<?= _Q($rows[2]['chair']); ?>
</div>
<div>Moderator:
<?= _Q($rows[2]['moderator']); ?>
</div>
<div>In-Cathe Interpreter:
<?= _Q($rows[2]['interpreter']); ?>
</div>
</button>
</form>
もちろん<?= _Q($rows[2][‘interpreter’]); ?>などというPHPのhtml植え込み書式を使用しています _Q( )という関数は、htmlspecialcharacter( )関数のラッパーです
ここでの問題点は、似たようなコードが繰り返され、<div></div>タグが多用されているため、ぱっと見て構造(深さ)が分からない、という点です
これをもっとも必要な <div>タグでこの部分をくくり 例えば
<div class="Session">
<div class="Subsession">
<?php $sessio1->domOut(); ?>
</div>
<div class="Subsession">
<?php $session2->domOut(); ?>
</div>
</div>
という風にできれば文書の論理構造がより明確になります これをhtmlの中でどのように実現するか? 鍵は PHPの classです これまで僕は何万行も PHPを用いて Web programmingをしてきましたが、実は classを避けてきました これは変な話であり、C++を用いてプログラムする時には平気で classを用いてるいるにもかかわらずです
そこで classを勉強して以下のような姑息的プログラムを書きました まずクラスの定義です
<?php
class Session {
private $value = '0';
private $rows = array();
public function __construct($rows, $value) {
$this->setRows($rows);
$this->setValue($value);
}
public function setRows($rows) {
$this->rows = $rows;
}
public function setValue($value) {
$this->value = (Int)($value);
}
public function domOut() {
$n = $this->value;
$row = $this->rows;
echo '<form method="post" action="db_entry/evt/evt01.php">';
echo '<button type="submit" class="session_title" name="sessionNo" value="'.$n.'">';
echo '<div>';
echo '<div class="fleft"> ';
echo _Q(mb_substr($row[$n]['begin'], 0, 5));
echo ' - ';
echo date("H:i", strtotime($row[$n]['begin']) + $row[$n]['duration']*60);
echo '</div>';
echo '<div class="fright">';
echo _Q($row[$n]['sessionTitle']);
echo '</div>';
echo '<div class="fclear">Session Co-Sponsor: ';
echo _Q($row[$n]['cosponsor']);
echo '</div>';
echo '<div>Venue: ';
echo _Q($row[$n]['venue']);
echo '</div>';
echo '</div>';
echo '</button>';
echo '</form>';
}
}
?>
そしてこれを実際に使用するには以下のようにします