うしブログ

うしブログ

趣味で運営する、GeoGebraの専門ブログ。

(作業メモ)StartPoint要検証(2行の場合;テキスト変更時未定義問題)

(要修復)ToggleButton・RollPolygonWithoutSlipping・貯金時計・直感力トレーニング

思考は万能ではないという話

行動できないことを悩む人がいる。どんな行動でも良いけれど、例えば、ふとんに入って目を閉じてじっとする、つまり寝る体勢に入ることができないとか、お風呂に入りたいのにソファーから動けないとか、締切が近いのに一文字も書けないとか*1

自分もその癖があるから、その辛さはよく知っている。なぜ行動できないのかを、どこまでも深く思考して、疲れて、今日が終わる。

思考は万能ではない。いくら思考しても、絶対に解決できない問題がある。その最たるものが、「自分はどうすれば行動できるのだろうか」という類の問題だ。

なぜ思考では解決できないかというと、思考するという行為が、すでに行動を先延ばしにするための逃避になっているからだ。「どうすれば行動できるのか」と思考している間の、自分の様子・動きを、客観的に観察してみると良い。自分では「これだけ真剣に悩んでいるんだ」と思っていても、客観的には、何もしていない、それだけの話で終わってしまう。逃避としての思考に意味はない。行動したくなくて、その代わりにやっていることだから、意味があってはいけないのだ。

だから、「どうすれば行動できるのか」という類の問題は、そのまま受け止めて思考を始めたら、出題者である「行動から逃げたい自分」の思うつぼであり、すでに行動を始めているという事実を作ることで、問題が成立している前提を壊す以外に、解決方法はない。スマホを見るのをやめて電気を消して横になって目を閉じなければ、寝ることはできないし、立ち上がって風呂場に行かなければお風呂には入れないし、文字を書かなければ文字は増えない。そこに思考が入る余地はない。

思考が意味を持つのは、行動が始まってからだ。行動しながらリアルタイムで行う思考には、生き物としての輝きがある。当然、間違いを犯すリスクも伴うが、それは行動した人にしか与えられない成長のチャンスであり、行動するということの醍醐味でもある。その意味で、悩み続けて動かないのか、リスクを承知で動くのかという選択は、究極的には、これからの時間を(比喩的な意味で)生きていきたいのか、死んでいたいのか、という選択でもある*2

*1:もっとも、自分がやるべきことを逐一他人が決めてくれるような、恵まれた(しかし拘束的な)環境にある人にとっては、縁遠い悩みかもしれない。

*2:過去に、思考より試行が大切だ、という旨の雑記を書いたことがある。行動前の思考を抑え、行動を始めるためには、「ためしにやる」「やってみる」という、tryの考え方が、とても効果的だ。言葉の力は不思議なもので、やる気がなくても、「やってみる」ことは、案外できたりする。動かずに悩み続けるより、やってみて考えよう。

webappで画面表示をコントロールするスクリプトの試作

webappのアプレット作成画面では、グラフィックスビューだけでなく、数式ビューやプロパティ画面などを同時に開いていることが多いです。

そのまま保存すると、「生徒向けワークシート」ページやアプレット埋め込みページでも、数式ビューやプロパティ画面が、グラフィックスビューと一緒に表示されてしまいます。保存前にグラフィックスビュー以外の画面を非表示にすれば良いのですが、面倒くさいと思うこともあります。

また、仮にグラフィックスビュー以外の画面を非表示にしたとしても、「生徒向けワークシート」ページやアプレット埋め込みページで採用されるアプレットサイズは、保存時のグラフィックスビューのサイズそのものです。そのため、アプレット作成は大きな画面でやりたいけれど、アプレットを公開するときは、その一部だけ見せればよい、というときには、保存前にいちいち、ウインドウを調節しなければならず、これが案外面倒くさいです。

そこで、「生徒向けワークシート」ページ、「編集」ページ、または埋め込みページにおいて、画面をグラフィックスビューに限定し、かつ画面を左上Corner[4]〜右下(任意の点、下記では点B)の領域に限定するためのスクリプトを試作しました。

 

※下記スクリプトは試作品です。

※「編集」ページの「高度な設定」で画面サイズを指定して保存した場合は、そちらの設定が優先されるようです。その後、点Bの位置を変えた場合には、「編集」ページの「高度な設定」にアクセスして、保存し直さなければ、縮尺が正常に更新されないようです。しかし、アプレット作成画面で、保存前にいちいちグラフィックスビュー以外の画面を非表示にしたり、画面サイズを調節するよりは、数段楽だと思います。

 

function ggbOnInit() {
  designForShow('B');
}

function designForShow(pointName){
  if(!window){return;}
  var dataArray = location.pathname.split('/');
  var appType = dataArray[1];
  console.log('appType:'+appType);
  if(appType == 'm' || appType == 'material'){
    setSizeByPoint(pointName);
    ggbApplet.showResetIcon(false);  //リセットアイコンの表示・非表示
    ggbApplet.enableShiftDragZoom(false);  //シフトドラッグズームの可否
    ggbApplet.setAxesVisible(false, false);  //軸
    ggbApplet.setGridVisible(false);  //グリッド
  }
  console.log('func designForShow is done.');
}

//画面表示をCorner[4]〜pointNameの領域のみに限定する
function setSizeByPoint(pointName){
  ggbApplet.setPerspective('G');  //画面をグラフィックスビューのみに限定する
  var fullWidth = ggbApplet.getValue('x(Corner[5])');
  var fullHeight = ggbApplet.getValue('y(Corner[5])');
  var userWidth = ggbApplet.getValue('round(x(Corner[5]) (x('+pointName+') - x(Corner(1))) / (x(Corner(2)) - x(Corner(1))))');
  var userHeight = ggbApplet.getValue('round(y(Corner[5]) (-y('+pointName+') + y(Corner(4))) / (y(Corner(4)) - y(Corner(1))))');
  ggbApplet.setSize(userWidth, userHeight);  //画面サイズを変更
  console.log('width and height successful.');
  var xmin = ggbApplet.getValue('x(Corner(4))');
  var xmax = ggbApplet.getValue('x('+pointName+')');
  var ymin = ggbApplet.getValue('y('+pointName+')');
  var ymax = ggbApplet.getValue('y(Corner(4))');
  ggbApplet.setCoordSystem(xmin, xmax, ymin, ymax);  //画面右下にpointNameが来るように画面をスライド
  console.log('func pointName is done.');
}