開発日記12:Java(ファイル操作、日付)

本日実施したことをメモ。

〇 本日の取り組み
・Java基礎学習(ファイル操作、日付)
⇒ 簡単なプログラム*1の作成、その他ネットや書籍の情報をもとに動作確認
5.現在日付を「/」区切りで表示する
6.指定のパス配下にファイルが存在するか確認し、存在する場合はファイルサイズ、ファイル名を表示し、 存在しない場合は存在しない旨をコンソールに出力する。
7.指定のパス配下に指定のファイル名が存在しない場合、ファイル名を全て「sample.txt」にする。
8.もし指定のパス配下に「delete.txt」が存在したら削除する。
9.入力した年がうるう年かどうか調べる。
10.区切り文字を入れて文字を繋ぐ(join使用)

〇 学んだこと
・基本的なクラス、メソッドの使い方の理解
※ 使用クラスFile,Calendar,SimpleDateFormat,LocalDate,Scanner,StringJoiner
・意外と処理方法を考えなくても1メソッドで済んだりする
(うるう年を調べるために、LocalDateクラスのisLeapYearを呼べば良いだけだったり)
・初期のJavaで導入されたjava.util.Dateクラスは、現在でも使う事は可能だが、ほとんどすべてのメソッドが推奨されておらず使うべきではなく、新しいプログラムで日付や時刻を扱うときは、java.timeパッケージとそのサブパッケージのオブジェクトを使用する
※ 2015年5月10日時点に執筆された書籍に記載。古い情報なので新しい情報も追いながら動かしていく

〇 課題
・作成プログラムの拡張
・学習の進め方(メソッドの使い方は調べれば済むような類だったりするので、仕組みや考え方の部分であったり、どうしたら書き方によって処理がもっと早くなるかだったり、そういった部分にフォーカスを当てて学習を進めて行く)

以上です。

一時的_Gitについてのメモ

エラーの内容:
ERROR: Permission to xxx denied to xxx.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

1.手順通り実施
1-1.動いた場合
ちゃんちゃん

1-2.動かない場合
順番に実施

1-2-1.どのローカルブランチをリモートにあげるかを指定してやればいいんじゃないか説
git push origin master:master

1-2-2.SSH絡み

https://qiita.com/flmil/items/2a2114bc73ec2a6f5e90
https://qiita.com/chroju/items/67da13c672efcd2bc787

1-2-3.
ユーザ再設定(git configで設定したユーザとgithubのユーザが異なる場合)

1-2-4.
すでにはいってるgit使えばいける説

1-2-5.
俺のPCでやってみる

1-2-6..
そもそも権限ない説(要調査)

メモ欄

確認コマンド
git config user.name
git config user.email
いっぺんに確認したい場合は、
git config –list


git push -u origin master
-uは次回以降origin masterを省略できる


mac gitはデフォルトでインストールされてる
1.ターミナルのアプリケーションからユーティリティ開く
2.git version

開発日記11:Ruby on Rails(仕組みなど)

〇demyでRubyやRuby on Railsを学習してたけど、
途中で分からないところがあり詰まってしまった。
Rubyは、pryというインタラクティブに実行が出来る(1+1と入れただけでコンパイルせずに2と返してくれたり)gemをインストールしたあとに動作確認するも、日本語の入力が不可になり詰まってしまった。調べても良く分からなかったので講師に質問中。
Ruby on Railsは、ヘルパーメソッドのところで考え方が良く分からず詰まってしまった。
こんなコードがあるけど、この「Board.new」が何を指しているのかが、どうもわからず。
恐らく知っている人からしたら超基本的なことなんだろうけど、
これは〇rogate進めて行けば解決しそうだなと思い、一旦ストップ。
class BoardsController < ApplicationController
def index
end

def new
@board = Board.new
end
end

そんなこんなで今日は一日某店にこもって勉強してました。
今日やったところで大事だなと思ったところと、
本日のKPTをアウトプット。

★ 今日やったところ
1. Ruby on Railsの仕組みの復習(〇rogateのRuby on Rails5 Ⅰ)
⇒やりすぎ禁物ってよく聞くのでこれ以上は見ない。見ない。
大事なところは2回見てるのでさすがに頭に入ったと思う。
具体的には、まずリクエストがあるとルーティング⇒コントローラ⇒ビューで処理がされる流れがあって、
ルーティングではリクエストのURLに従い、どのコントローラのどのアクションで処理しますよっていうのが書かれてて、それに従い実際にアクションされるわけだが、じゃあそのアクションはなにと紐づいているかというと、ここが若干覚えづらいところだけど、
コントローラファイル=ビューのフォルダ
コントローラのアクション=ビュー
で対応してる。
これが基本となってて、ここさえ覚えておけば、あとは以上をもとに考えれば分かるところだったり、細かいところを覚えたり、そんな感じでいけるのかなといった感触。
例)
URLの変更:ルーティングのファイルで受けるリクエストの指定をかえてあげるだけ
ページ追加:ルーティングのファイルにURL、コントローラ、アクションの対応付けを1個追加してやって、コントローラやビューもそれと対応するように書くだけ。
レイアウト:rails generate controller コントローラ名 アクション名でrailsのアプリを作ったあとに出来るapp/assets/stylesheets配下のCSSファイルを編集してやればすべてのビューに編集した内容が適用
リンクの作り方:ルーティングのファイルで受けるリクエストとして指定したものと同じようにビューで指定してやる。ビューでの指定方法はHTMLの基礎知識だけでカバーできる(具体的にはa hrefの値に指定してあげるだけ)

2. Dockerの使い方
2-1.起動
docker-compose up -d
※ docker-compose.ymlのあるディレクトリ上で実行
2-2.停止
docker-compose stop
※ 停止状態にあるだけでコンテナは存在したまま
2-3.削除
docker-compose down
※ コンテナが削除
⇒開発を進める中で、基本的には「起動」と「停止」の2つを使用すれば問題ない。

3. Ruby on Railsのコントローラやモデルについて
基本的にコントローラを定義する際はApplicationControllerを継承する。
これによって定義したクラスがコントローラとして機能する。
ApplicationRecord⇒モデルとして機能させるために継承したりする
ApplicationRecordはさらにActiveRecordクラスを継承していて、こいつがO/Rマッパーの機能を持ってる。

4. ブラウザからサーバに送信するHTTPメソッドと役割
GET ⇒リソースの取得
POST ⇒リソースの作成
PATCH/PUT ⇒リソースの更新
DELETE ⇒リソースの削除
やりたいことによってメソッドを使い分ける
だが、なぜ使い分けるのかがいまいち腑に落ちず。
ここはもっと調べる必要あり。

5. エラー対処
今日、ビューファイルを作成してローカルの環境で動作確認したら、こんなエラーメッセージが出た場面にでぐわした。
We’re sorry, but something went wrong.
If you are the application owner check the logs for more information.

ログファイルを見てみたら、こんな風に書いてた。
ActionView::Template::Error (Your template was not saved as valid UTF-8. Please either specify UTF-8 as the encoding for your template in your text editor, or mark the template with its encoding by inserting the following as the first line of the template:

上記の通り、確かに文字コードがSJISだったので、UTF-8じゃないとダメなのかと思い、UTF-8に変換してあげたら、問題なく動いた。ちゃんちゃん。

6. その他
Rails概要、Ruby概要、MVCアーキテクチャ、Twitterのユーザ名変更、bootstrap導入手順、エンジニアの契約の話とかとか。

★ KPT
K:
・1日店にこもる忍耐力
・大枠をおさえる(今回でいうとルーティング、コントローラ、ビューの流れと仕組み)

P:
・ハマりすぎ
⇒見切りが必要。2時間同じ問題で悩んだ。シンプルに時間がもったいない。
・集中が途切れる
⇒原因不明、たまに休憩入れたほうがいいかも。

T:
1日に3回くらい気分転換になる動画見る、別のことする
⇒したら全体的に生産性あがるかも?わからんけど

以上です

開発日記10:Java(処理時間計測)

今日は、
Java(お題)
お題の3と4をやりました。
こちら。
3.ファイルの中身を全て大文字に書き換える
4.処理時間をはかる(スリープ使用)

3に関しては、ファイルの場所を認識させ、認識したファイルを読み込み(リスト化)、リスト化したものを拡張forループで回しながら大文字に変換するメソッドを使って出力するといった至ってシンプルな処理で済んだ。
こんな感じ。

Path file = Paths.get(“ファイルのパス”);
try {
List<String> text = Files.readAllLines(file); // UTF-8
for (String str : text) {
String toUpperstr = str.toUpperCase();
System.out.println(“str:”+str);
System.out.println(“toUpperstr:”+toUpperstr);
}
} catch (IOException e) {
e.printStackTrace();
}

4に関しては、こんな感じで書いてみた。

キーボードで入力した数字(1~3)により計測単位(ミリ/マイクロ/ナノ)秒での計測が出来るコードで、
今回は試験的に、1秒スリープをかけることで約1秒の計測時間が得られるようにしている(本来はここに計測したい処理を書く)。

〇 気を付けたこと。
・入力チェックの実装(正規表現使用)。
⇒入力した値は半角数値の1~3のみを受け付けることとし、半角数値以外であればエラーメッセージ「半角数値で入力して下さい。」をコンソールに出力し、半角数値であっても1~3以外であれば「出力が出来ません。」をコンソールに出力。
・メソッドの抽出
⇒コードの構成として「メイン処理」「入力チェック」「ミリ秒計測」「マイクロ秒計測」「ナノ秒計測」とした。

〇 学んだこと。
・マイクロ秒はSystemクラスのnanoTimeメソッドの戻り値を1000倍してやれば取得できる。
・switch文のdefaultで、caseに該当しなかったときの処理を書ける。
・半角数値を表す正規表現(^[0-9]*$)
・計測時間を見たいときの処理方法

〇 お題4の課題。
・マジックナンバーを使わないで定数化する。
・「コンソールに出力」だと1パターンなので、例外処理を加えたり画面を作ったりしたい。
・currentTimeMillsは、OSによって処理時間にばらつきがあるとのこと。ここらへんの仕組みが良く分かっていないので調べる。
・ファイル読込処理のメソッドの速度の違いなど、より実用的な形で実際に計測をしてみる。
・全角数値の許容(今ははじいている)。

〇 全体的な課題。
・お題に関しては、1個1個でもっと深掘りしたいことはあるけど、まずは作ったお題10個を終わらせる。
・Railsの環境構築をしたので、実際に動くものを作ってみる。
・自社の勉強会(Java)で実施することを考える。
・外部の勉強会の参加準備(基本は自習により進めていく形式なので、やること考えたりとか)。

以上です。

開発日記9:Java(ファイル読み込み)

今日は、昨日任意で作成したお題をもとに、ファイル読み込み部分を見ていた。
Java(お題)

「ファイル読み込み」の1つだけで色々なやり方があったり、考えなければならないことがあることを知った。

ファイルを読み込み、読み込んだ内容をコンソールに出力する際、
昨日はこんなやり方で実装した。
1. Fileオブジェクト生成
ファイルのパスを引数にFileオブジェクト生成
2. File存在確認
2-1. Fileが存在する場合
2-1-1. FileReaderオブジェクト生成
上記1.を引数にFileReaderオブジェクト生成
2-1-2. ループ処理
上記2-1-1.で生成したFileReaderオブジェクトのreadメソッドを呼んだ結果の戻り値を変数(data)に格納し、変数(data)が-1になるまで下記処理を行う。
char型でキャストした変数(data)をコンソールに出力する。
2-1-3. ファイルクローズ
上記2-1-1.で生成したFileReaderオブジェクトのcloseメソッドを呼び出す。
2-2. Fileが存在しない場合
文字列(ファイルが存在しません)をコンソールに出力する。

Fileオブジェクトを作って、それをもとにFileReaderオブジェクトを作って、
1文字ずつ回して出力しているだけ。

1文字ずつ回すので処理が遅いという問題があるらしい。
細かいところは正直良く分からないが、まとめて処理してみたいなと思い、
ファイルの内容をリスト化して回す方法でやってみた。Java7以降は使えるらしい。
こんな感じ。

Path file = Paths.get(“ファイルのパス”);

try {
List<String> text = Files.readAllLines(file); // UTF-8
List<String> text2 = Files.readAllLines(file, Charset.forName(“MS932”)); // MS932
for (String str1 : text) {
System.out.println(“test1:”+str1);
}

for (String str2 : text2) {
System.out.println(“test1:”+str2);
}

} catch (IOException e) {
e.printStackTrace();
}

コメントアウトとかして動作確認したところ、下記のことがわかった。
・SJISのファイルに対してreadAllLinesメソッドを呼ぶと、java.nio.charset.MalformedInputExceptionが発生し落ちる。
⇒ ファイルの文字コードをUTF-8にしたら解消された。
ただ疑問なのは、もともと落ちていなかったのに、ファイルの文字コードをSJISからUTF-8に変えたときから、readAllLinesメソッドの第二引数にCharset.forName(“MS932”)と指定したコードで落ちるようになったこと。

リファレンス:

forName(String charsetName)

指定された文字セットのCharsetオブジェクトを返します。

単純に、指定した文字コードでファイルの読み込みを行いますよってことだと思われるが、だとしたら、もともと文字コード違い(ファイル側はSJIS、指定はMS932)で落ちるのが普通なのではないか、なぜファイルがSJISだと落ちなくて、UTF-8だと落ちるのか?

っと思ったが、Googleで「MS932 SJIS Java」と検索したところ、
どうやらSJISもMS932も仲間っぽい。納得。
SJISのしたにMS932(とか)がいるイメージ。

また、ファイルの読み込みに関して下記のやり方もあるらしい。
・ファイルの内容をStreamで読み込む(Java8以降)
・FileInputStreamを使って読み込む
・FileReaderだけだと1文字単位だが、BufferedReaderと組み合わせて使えば、BufferedReaderのreadLineメソッドを使って行単位で読み込みができる
・ファイルのエンコーディングを指定し読み込む場合は、InputStreamReaderとFileInputStremを組み合わせて読み込む
・ファイルを読み込むためのBufferedReaderを、Files.newBufferedReaderを使って取得する

Java11からは、Files.readStringという、ファイルの内容を一度に読み込んで1つのStringにできるメソッドも登場してるとのこと。

まだまだ奥が深そうなのでしばらくファイル操作についてもっと見て行こうと思う。

開発日記8:Ruby on Rails環境構築(終編)

今までの経緯はこちら
Ruby on Rails環境構築
Ruby on Rails環境構築(続編)

原因は未だ不明ですが、Dockerを使って環境構築が出来ました。
やっとこさ画面に出たこの文字。

Yay! You’re on Rails!

周りで同じくRailsの環境構築をしている人も同様の事象によりサーバの起動が出来ていなかったので、端末依存の問題である可能性は低いと見て良いと思う。
だとすると、設定ファイルか・・?
今回Dockerを使った構築では、
下記設定ファイル類は、Dockerでの環境構築を説明してくれていた人のものを使った。
docker-compose.yml
Dockerfile
Gemfile
Gemfile.lock

Railsサーバが起動するまでの流れとして、
Railsアプリを作成(rails new)するとGemfileをもとにbundle installされる。
つまり、そのアプリになにか問題があってサーバが起動できないとしたら。
Gemfileが原因でアプリになにか問題を生んでいたとしたら。

原因特定までにはまだしばらく時間がかかりそうですが、
一旦は解決ということで締めたいと思います。
見て頂いた皆様ありがとうございます。

開発日記7:Java

適当に自分が不安なところでJavaのお題10個作ってみた。

1.キーボードで入力した文字がテキストファイルで保存される
2.指定のファイルを読み込み、コンソールに内容を出力する
3.ファイルの中身を全て大文字に書き換える
4.処理時間をはかる(スリープ使用)
5.現在日付を「/」区切りで表示する
6.指定のパス配下にファイルが存在するか確認し、存在する場合はファイルサイズ、ファイル名を表示し、
存在しない場合は存在しない旨をコンソールに出力する。
7.指定のパス配下に指定のファイル名が存在しない場合、ファイル名を全て「sample.txt」にする。
8.もし指定のパス配下に「delete.txt」が存在したら削除する。
9.入力した年がうるう年かどうか調べる。
10.区切り文字を入れて文字を繋ぐ(join)

とりあえず1をやってみたので課題などメモ。

1について

こんな感じで書いてみた。finallyもtry-with-resourcesも使っていないのでよろしくないコードかも。

22行目でBufferedReaderのclose処理、
46行目でFileWriterのclose処理をコメントアウトしているけど、
下記表の通り、FileWriterのcloseを行った場合のみ書込みが出来た。

コメントアウト対象 結果
なし 書込可
22行目のみ 書込可
46行目のみ 書込不可
22行目と46行目 書込不可

flushという考え方がキーになっているっぽい。
書込にはバイト出力ストリーム(java.io.OutputStream)と、
(文字出力ストリーム(java.io.Writer)があって、
バイト出力:close前にflushメソッド呼ぶ必要あり(じゃないとデータの終わり部分がストリームに書き込まれない場合あり)
文字出力:closeメソッドの処理の中でフラッシュを行うようになっているのでflushメソッドを呼ぶ必要なし
で、今回のFileWriterは後者なので、flushメソッドは使わなくても書込みができたという話

今後:
・バイト出力ストリームを使う場合は、flushメソッドは忘れない
・close処理を行うときはJava7以降登場したtry-with-resourcesの利用
⇒try-finallyと比較した場合、下記の利点があるとのこと
1.自動でcloseしてくれる(try-finallyだとfinallyブロックでcloseしないといけなかったりした)
2.tryブロックとfinallyブロックで例外が発生した場合、finallyブロックの中で発生した例外がスローされて、もともと例外が発生した元のtryブロックの例外が分からなくなる問題があったが、
try-with-resourcesだと、tryブロックの例外がスローされるとのこと。

明日からは2からやろ。

開発日記6:Ruby on Rails環境構築(続編)

こんばんは。
Ruby on Rails環境構築絶賛はまり中のbiriya-です。
Railsアプリケーションの作成は出来たが、Railsサーバの起動が出来ない。
rails sコマンドを実行すると、Usageが出てしまう。
考えられる原因としては、binディレクトリが出来ず、railsコマンドが認識されていないこと。

未だ解決しないですが、今日やってみたことをメモ。
① bundle install –binstubs
binstubsというのは、gemを実行するのに便利なスクリプトを./binに作ってくれるものだと。
今いち理解できないけど、物は試しということで実行したところ、
binディレクトリが作成された。
これはもしやと思いこの状態でrails sを実行してみたところ、
こんなエラーが出た。
C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require’: cannot load such file —
xxx/sample_app/config/boot (LoadError)

gemが足りていないのかと思い、gem installコマンドで「core_ext」やら「boot」やら指定してみたが事象変わらず。

② Ruby on Rails 環境構築の手順を書いてくれてるユーザの記事を見て実施
これまで某有名学習サイトの開発環境構築手順(2件)でやってみても出来なかったので
一旦Rubyをアンインストールして、
1ユーザの環境構築手順の記事を参考にしてみたがこちらも同じくrails sでUsageが出てしまい詰まってしまった。

③ Dockerを使った方法(今ここ)
こちらは〇demyの講師による提供動画だが、
rails sの前段階(docker構成時)で詰まって先に進めなくなった。

結局進展がなく色々なサイトを見てたら7時間も時間を使ってしまった。
かけるとしても3時間くらいで見切りをつけるべきだったと反省。

今後は、まずは〇demyに頼って、それでも分からなさそうだったら別の方法を試す形で進めていこうかと。
今は講師に質問中なので、それまではJavaの勉強をっと。

開発日記5:Ruby on Rails環境構築

Ruby On Railsの開発環境構築をしているのだが、現在進行形でハマっているので忘れないようにメモ。

何にはまってる?
⇒ サーバが起動できない。
rails newでRailsアプリケーションを作成してるのに、
rails sでサーバが起動できない。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14218069694

何が原因?
⇒ 恐らくrails newで作成されたRailsアプリケーション配下にbinディレクトリ(ここにrailsコマンドを使えるようにする設定ファイルが入っているんだと思われる)が出来ないこと。

どうしたらいいの?
⇒分かりません。
出来ないときは下記のコマンドを使ってみたらいいよと言うことで、
理解後回しでとにかく実行してみた。
rake rails:update:bin
rake app:update:bin
結果、ロードが出来ないと怒られる。現状解決策見つからず。

どうするの?
⇒ 分からなくなったときはスタートに立ち返ろうということで、
今まで出てきたところで分からなかった用語や仕組みについて整理してみる。
① gem
RubyGemsが公開しているパッケージ(ライブラリ)。
パッケージ化されているので、これを使えばRubyの実装が簡単にできるらしい。

② Gemfile
gemはどうやら何かしらの依存関係を持っているらしく
それをGemfileにまとめておこう、という感じっぽい。
例えばGemfileに下記のような記述があるが
ruby ‘2.5.1’
# Bundle edge Rails instead: gem ‘rails’, github: ‘rails/rails’
gem ‘rails’, ‘~> 5.2.4’, ‘>= 5.2.4.1’
恐らく、ruby 2.5.1を使いますよ、そしてrailsのバージョンは
5.2.4以上5.2.4.1以下を使いますよ、って意味
そういったrubyにかかわるところで
バージョンの管理とかをしてくれているイメージかな。多分。

③ bundler
gem同士の依存関係やgemのバージョンを管理するgem。
・・・・分かりにくいが、
スポーツ(gem)にビリヤード(bundler)があるように
bundler(ビリヤード)もスポーツ(gem)なんだと、そういったニュアンスで合ってると思う。
どっちかというとgemのが意味的な範囲は広いイメージ。
具体的にbundlerが何をしてくれるのかという話だと、
例えばbundle installをすると、Gemfileに記述された内容をもとにgemをインストールしてくれる。
(合ってるかわからないけど)個人的にはgemを実際に管理してるのがGemfile、それをコマンドで扱っているのがbundlerというイメージ。

④ Gemfile.lock
実際にインストールしたgemがかいてるやつ(Gemfileはインストールされたgemはもちろん、インストールされていないものも含め書いている)。

⑤ gem追加の流れ
Gemfileを更新し、更新したGemfileでgemを取り扱いたいのでbundle installする。
そしたらインストールされたものがGemfile.lockに書き込まれる。

⑥ Gemfile.lockの存在意義
下記の違いがあるため、
Gemfile:バージョンに幅を持たせて記述ができる
Gemfile.lock:特定のバージョンのみ記述
A環境と全く同じB環境を作りたい場合に、Gemfile.lockが必要になってくる。
例)チームメンバと同じ環境で開発したい、テスト環境と本番環境で同一環境を用意したい場合など。
また、それならGemfile.lockだけでいいのではないかと思うが、
Gemfileがあることで、
開発中にバージョンアップされたときに対応ができ(Gemfileで幅を持たせて記述しているため)、開発者がGemfileに個別にバージョンを指定する手間が省け、開発効率が良くなる。
※下記を参考にさせていただきました。

⑦ bundle init
Gemfileを作成する。

⑧ bundle install/update
bundle install : Gemfile.lockをもとに、Gemをインストール。
bundle update: Gemfileをもとに、Gemをインストール。そしてGemfile.lockを更新。

⑨ bundle updateで気を付けること
Gemfile.lockがバージョン管理システムのリポジトリに登録されていないときに
bundle updateをすると大きな手戻りが発生するリスクがあることについて、
ネットで見ると色々書いてあったが、恐らく理解出来たと思うのでまとめ。

シチュエーション:A環境でbundle installし、A環境と全く同じ環境をB環境に作り、リポジトリにGemfile.lockなし。
⇒まず前提として、上記④で記載した通り、GemfileとGemfile.lockには下記の違いがあり
Gemfile:バージョンに幅を持たせて記述ができる
Gemfile.lock:特定のバージョンのみ記述
特定のバージョンが記載されている「Gemfile.lock」でA環境を作成したので、
それをそのままB環境に持っていった場合、その時点では同じ環境であるが、
それからGemfileに記載のバージョンがあがってB環境でbundle updateすると、
bundle updateではbundle installと違いGemfile.lockのバージョンも更新されるので、
もともとのバージョンがなんであったか分からなくなり、もともとの状態に戻せなくなる。
もちろん、リポジトリにGemfile.lockがあったり、B環境を作ったときのGemfile.lockのバックアップがあれば大丈夫。

今日はここまで
今年中にはrails sでサーバ起動できない問題解決できますように…

球日記13:ボウラード

久々更新。
ビリヤードの課題も大きなものはある程度片付いてきたので、そろそろ自分の実力を客観的に見てみたく、今月、ボウラードを日を分けて5回ほど実施してみました。
条件
1. 実施前の練習なし、やり直し無し
2. 木ラック

6月2日(土)162点・・・3ストライク、5スペア
6月4日(月)176点・・・8ストライク、2スペア
6月8日(金)155点・・・4ストライク、4スペア
6月16日(土)195点・・・6ストライク、4スペア
6月23日(土)103点・・・2ストライク、3スペア

Ave158、ストライク率46%、スペア率37%でした。

【課題】※個人参照用。
①ボウラード(エニーボール)の取りきり方
1-1. 以下、「●優先して取る球」を狙う前後の組み立て方のイメージ化
●優先して取る球。
・邪魔なボールが居て直接ポケットに狙えない、または狙いにくい球
・入れに不安のある球
1-2. どういう順番で球をどこに落としていくのかを決めるタイミングの基準を持つ
例)残り球があと何個になったら、保険がきかなくなったらetc
②ボウラードのブレイク
2-1. ブレイク正面からずらしても、結局トップと密着してしまうことたまに有り。
手球はセンター付近に戻るような撞点で、厚みはいろいろ変えてトップの球の挙動を意識してみてみる。

③フォーム
上体をかがめる前に意識している以下7点の無意識化
3-1: 立つ位置:キューのグリップをへそちょい後ろくらいで体の右側で持ち、インパクト直前(=肩落とす場所)に合わせ確かめる
3-2: 立つ方向(右足の向き):狙いのラインとキューを平行にして合わせる
※狙いのラインと一致させるように合わせると、多分右足が邪魔になる。
立つ方向を合わせる際に、狙いのラインで合わせるのか、狙いのラインと平行したキューの方向で合わせるのか、考えを整理
3-3: 「グリップを出来る限り短く、重心は出来る限り前のめりにならない」状態にするため、左手を曲げてグリップの短さを稼ぐ
3-4: 左足は自分が思っているよりやや開く(上スピン、下スピンの回転のかかり方を一定にすることが目的、台を真正面に見たときに台の左側と向くような姿勢で回転をかけるのと、台の右側を向くような姿勢で回転をかけるのとだと、後者がかかりやすい傾向があり、左足の向きで重心を調整する)
3-5: 尻を引く都合上、多分上半身の体重は左側によりかかることになるので、
左5.5 : 右4.5 のイメージで構える。
3-6: 尻の引き方は「狙うラインの真後ろ」イメージで、「おじぎをして狙うラインを横切らない最小限の距離」引く。
3-7: 肘上は不必要に動かさない。動かすのは自分が思ったインパクトタイミングと実際のショットとの誤差を許容する為(=撞点の安定性の為)、また、幹を強くするため(感覚的な話で、実際にどういう理屈かは不明、これが一番今はしっくりくる)
3-8: 立ち位置上、前のめりになるショットの左手の伸ばし具合、右手の持つ位置の考えを整理

④厚み、ポジション
4-1: 遠い厚い球
4-2: 良くある角度の厚みの感覚化
4-3: 手球を最前面にイメージし重なりを的球となるべく近いところで見る感じで調整
4-4: 基本、厚み→撞点→ライン。ただ、なるべく厚みは感覚化、撞点はラインとセットで考える。最終的にはどこに出したいか。

上記、色々試してみた結果の現在の最適解。今後変わる可能性あり。
上記課題15個の内、全て確実にとは言わないがほぼクリア出来たら、
ボウラードのアベレージを3回以上プレイし取ってみる、
目標300点1回以上、アベレージ230点以上