論理の流刑地

地獄の底を、爆笑しながら闊歩する

「知的トレーニングの技術」+「アイディア大全」

執筆・リサーチの方法論がいまいちイケてないんじゃないか、
というのが最近の自分自身の疑念としてあるので、読んでみた。
忘却の前にちょいと書き残しておく...

ひとこと感想

「アイディア大全」

アイデア大全――創造力とブレイクスルーを生み出す42のツール
・ネット上では有名なブロガー、読書猿さんの著書。いろいろな方法論が載っていて大変に有益なブログ。
・ただし、レビューで絶賛されている割には使い勝手が...という印象。
・もちろんこの使い勝手の悪さは承知して、この形で執筆されているのだろう。
・(問題設定・仮説提示・分析・結論提示という)知的生産工程を
 ワンストップで最終成果物まで仕上げることが生業の人(自分含む)が読むと、
 (料理の全体工程ではなく)下処理の方法やソースの作り方ばかりが載っているような、
 片手落ちのレシピを提示されている気分になるのでは。
・部分工程の改善案集なので、全体工程にうまく取り入れられる人向けの本である。
・個人的には「バグリスト」「コンセプト・ファン」「仮定破壊」「さくらんぼ分割法」「等価変換法」らへんを意識的に作業フローに入れて中間成果物をデザインしとくともう少し、執筆のスピードが上げられるんだろうな。
・というか「発散」と「収束」をうまく分けられてないんだよなぁ私は。
・この本に対して「こんなことみんなやってるじゃん」という批判もあるが、意外と基礎技術と基礎技術として認識して研磨するのって大事やない?
 

「知的トレーニングの技術」

知的トレーニングの技術〔完全独習版〕 (ちくま学芸文庫)
・「アイディア大全」の著者がブログでプッシュしていたのに乗って購入。
・前菜とデザートは若干癖あるが、メインディッシュの部分はかなり良い本である。
・「知的生産過程のモデル」(p.111)は自作の執筆工程と、かなり符合していて
 驚嘆すると同時に少し笑ってしまった。似たこと考えるひとはどの時代にもいて面白いなぁ。
・「知的生産過程のモデル」の12工程をみていくと、
 「#6:構想(細部まで説明可能な概念図、思考の地図、観念の設計図を作成する段階)」から
 「#7:構成(観念図を小分けした「目次」につくり変えて、面を線に変換する段階)」までの流れが、なんというかKJ法AB型(川喜多「発想法」参照..)と同じ思想を感じる。
・「蒐集」を分析・研究の基礎作業として重視するというのは目から鱗である。というかこれが個人的この本から得られた一番の示唆。以下、いくつか示唆的なところを引用。

あつめることは分析の第一歩だ。物でも情報でもいいが、あつめているうちに知らず知らずにそれについての鑑識眼が身についてくる(p.119)

ロラン・バルトのモード研究について)
これは、果てしない蒐集作業に一定の枠を与えて、研究対象の体系性を確保するという方法の好例で、
この枠づけが逆に、テーマを明確に限定することにもなっていることがわかるだろう。
だから、どこまでも趣味にとどまる蒐集ならともかく、知的生産を目標にした蒐集はなんらかの体系性・全体性をあたえる必要がある(p.122)

・個人的に目標としている某K先生も蒐集魔という話を耳に入れたことがある。要するにケース × 変数のマトリックスを蓄積していく、という作業が知的生産の「発散」のフェーズに(無論「収束」にも効いてくるが...)非常に有益であるということである。ここがおろそかだなぁ自分は。


ということでこれから何をするか

・また自分の執筆工程を少し変えていく。
・中間成果物をどうするかということについて、蒐集→発散→収束という段階を認識しながらテンプレートを改訂したい。
・人に説明できるように、進捗報告資料とも密連結にしておきたいところ。

Macで、回帰系の手法の結果を、Excelに貼るだけの状態で出力する関数

俺しか得しない関数シリーズ。要dplyr。

※主な今後の改善点を備忘のために、冒頭に書いておく
✔︎ glmやlmerへの対応を
✔︎ モデル指標のところ、小数点桁を指定可能に
✔︎ 変数をmodelごとに差し引きした時に、表側の変数名とCoefやS.E.の係数推定値の垂直位置がずれるのを直す(今は手動。そんなにめんどくさくないからね)

Motivation

・めっちゃRegression Tableつくらなあかんねんけど、いちいち整形するのめんどい。
・でも私はTex族じゃない→texregとかstargazerとかはぴったりこない。ExcelとかいうMicrosoft様のむっちゃ使いにくい神ソフトで表を整形したい
・でもたくさんあるRegressionのコードごとに関数定義するのはダサい

Source Code

## 便利関数定義 ##
# 引数①:  lm()関数の結果を格納したlist
# 引数②: 数値間の区切り文字(デフォルトはタブ区切り)
# 引数③: 回帰係数をExp()したものを表示するか否か ※対数変換済所得などを従属変数に指定したとき用
# 引数④: fileの出力場所  ※デフォルトはDesktopに"test.txt"という名前で出力する
# 引数⑤: どの関数を使ったか。Defaultはlm() # lm, clm(順序ロジット, ordinalパッケージ), rq(分位点回帰、quantregパッケージ)に対応( As of 17/6/27)

reg_to_excel <- function( res_list , blk = "\t" , exp_coef = F , file_name = "/Users/Ronri_Rukeichi/Desktop/test.txt", reg_function = "lm" ){

def_funcs <- c("lm", "rq", "clm")

if(!reg_function %in% def_funcs ){
stop("指定された回帰関数は未対応です, clm or lm or rqのどれかを指定すべきです")
} #if

info_list <- lapply( res_list , function( rslt ){

#実装上の注意 ,,,, (A)回帰係数系(独立変数に付随する情報)と、(B)モデル指標系、は別個にみたほうがよいので、別の情報としてかえす
if( reg_function == "lm" ){
# - - -Case1: lm関数(通常のOLS)- - -#
# summary objectを取得
smr <- summary(rslt) 

## 回帰係数、S.E.を取得
coef_arr <-  coef(smr)[,1] #回帰係数
se_arr <- coef(smr)[, 2] #標準誤差
pval_arr <- coef(smr)[, 4] #p値
var_name_arr <- rownames(coef(smr)) #変数名
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

## Model指標を取得 ### 
N <-  length(smr$residuals) # 分析ケース数
nparam <-  slot(logLik((rslt)),"df") #number of parameters
val_logLik <- as.numeric(logLik((rslt))) #対数尤度 
val_AIC <- AIC( rslt) 
val_BIC <-  BIC( rslt)
r_squared <-  summary(rslt )$r.squared
adj_r_squared <- summary(rslt )$adj.r.squared
cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC" , "R Squared" , "Adj. R Squared")
cri_values <- c( N , nparam,  val_logLik , val_AIC , val_BIC , r_squared , adj_r_squared )

#-- convert to data frame 
cri_df <- data.frame( Var = cri_names , Value = cri_values )

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df ,  Model = cri_df ) )  #

}else if( reg_function == "clm"){
#- - -Case2: clm関数("ordinal" package , ordered logit/probit )  - - -#
# ordered logit modelの場合も同様に実装する..

#--Summary Object --
smr <- summary(rslt) 

# - - Coefに関する情報行列は、lmの場合と同様の実装- -
coef_arr <-  coef(smr)[,1] #回帰係数
se_arr <- coef(smr)[, 2] #標準誤差
pval_arr <- coef(smr)[, 4] #p値
var_name_arr <- rownames(coef(smr)) #変数名
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

#- - -Model Information Matirx - - -#
N <-  smr$nobs # 分析ケース数
nparam <-  slot(logLik((rslt)),"df") #number of parameters
val_logLik <- as.numeric(logLik((rslt))) #対数尤度 
val_AIC <- AIC( rslt) 
val_BIC <-  BIC( rslt) 

cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC" )
cri_values <-  c( N  , nparam , val_logLik , val_AIC , val_BIC ) 

#- - -Convert to Data Frame - - -#
cri_df <- data.frame( Var = cri_names , Value = cri_values ) 

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df ,  Model = cri_df ) )  #

}else if( reg_function == "rq"){
#- - -Case3 : rq関数(分位点回帰モデル , "quantreg" package ) - - -#


##  出力イメージ(他の回帰系との相違点)
# ・OLSやGLMの場合はregression tableに記載するときは, 「Model XX」の下に各情報が並ぶ感じになるけど、
#  Quantile Regressionの場合は、「Model XX」の下に 「YY%点」が併記される形になるので、一階層分深めにdata構造を作っておく

##--- summary object --- ##
smr <- summary( rslt ) 

coef_df_list <- list()
cri_df_list <- list()

for( i in 1: length( smr ) ){
## 回帰係数周りの情報 ##
#print(smr)

coef_arr <- ((smr[[i]])$coefficients)[,1]
se_arr <- (smr[[i]]$coefficients)[,2]
pval_arr <- (smr[[i]]$coefficients)[,4] 
var_name_arr <- rownames((smr[[i]]$coefficients))
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

coef_df_list[[i]] <- coef_df

## - - -Model Information --- ##
N <- nrow( rslt$residual)
nparam <- slot( logLik(rslt),"df")
val_logLik <- logLik(rslt)[i]
val_AIC <- AIC(rslt)[i]
val_BIC <-  -2 * val_logLik + log( N ) * nparam
val_tau <- smr[[i]]$tau
cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC", "Quantile" )
cri_values <-  c( N  , nparam , val_logLik , val_AIC , val_BIC,  val_tau) 

#- - -Convert to Data Frame - - -#
cri_df <- data.frame( Var = cri_names , Value = cri_values ) 
cri_df_list[[i]] <- cri_df

} ##for

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df_list ,  Model = cri_df_list ) )  #

} #if 回帰関数別
} ) #lapply

###====: info_listからテキストに変換:=== ###
## Quantileの場合が難しい → とりあえず、tauの下に各モデルを配置するような感じにしとく, 


# 関数定義: 文字列のvectorをk行空きにする関数
mix_blank <- function( str_arr ,k=1 , blank_str=" " ){
return(as.vector( matrix(c( str_arr , rep( blank_str , length(str_arr) * k  ) ) , nrow= (k + 1) , byrow=T ) ) )
} #function 

# - - 有意確率→Symbolの変換関数
pval_mark <- function( pval){
return(ifelse( pval >= 0.10  , " " , ifelse( pval  >= 0.05 , "†" , ifelse( pval >= 0.01 , "*" , ifelse( pval >= 0.001 , "**" , "***" ) ) ) ))
} #function


#整形用の関数を定義 
#・標準誤差は[ ] で囲んで回帰係数の下に表示. 
#・カスタマイズできるようにしてもいいが、とりあえず後回し。
library(dplyr) #dplyrパッケージを読み込む

coef_to_txt <- function( coef_df, exp_flag = F,  round_digit = 4  ){
#必要情報だけ抜いてくる
info_df <-  dplyr::select( coef_df, Coef, S.E., Pval)

# S.E.を [ ] で囲んでCoefの下にもってきて一列にする
se_str <-   paste("[", formatC(round(info_df$S.E. , round_digit ) , format= "f" , digits = round_digit) , "]" , sep="")
coef_str <- formatC( round( info_df$Coef ,  round_digit ) , format="f" , digits = round_digit )
est_str <-   as.vector( matrix( c( coef_str , se_str ) , byrow=T , nrow = 2 ) )

# 有意確率を表すsymbolの文字列生成 
p_smbl <-  pval_mark( info_df$Pval) 
p_smbl_arr <- mix_blank(p_smbl , k= 1 ) #1行空きにする

# expのCoef乗を返す(Flagに応じて)
if( exp_flag == TRUE ){
exp_beta <-  formatC( round( exp( info_df$Coef ),  round_digit )  , digits = round_digit , format="f" )
exp_beta_str <- mix_blank( exp_beta, k = 1 )  #一行空きにする。

# 行列型にして返す
return( cbind( est_str, p_smbl_arr , exp_beta_str) )

}else{
#行列型にして返す
return( cbind( est_str, p_smbl_arr ) ) #
} #if
} #function( coef_to_txt)

# 簡易関数, Model Criteria version
mdl_to_txt <- function( model_df , exp_flag=F){
cri_values <- formatC( model_df$Value  , format="f" , digits = 3 ) 
## exp(回帰係数)を表示するか否かで、何列空きにするかを変える ##
if( exp_flag ){
ret_mat <- cbind( cri_values , rep( " " , length(cri_values ) ),rep( " " , length(cri_values ) ) )
}else{
ret_mat <- cbind( cri_values , rep( " " , length(cri_values ) ) )
} #if
return(ret_mat ) 
} # function 

# 行数が違う行列をcbindするときに、数が少ない方を空の文字列で埋める関数
cbind_v2 <- function( mat1 , mat2 , blank_str = " "){
n1 <- nrow( mat1 ) 
n2 <- nrow( mat2 ) 

if( n1 > n2 ){
#第1の行列のほうが、第2の行列よりも行数が長い場合..
add_mat <-  matrix( rep(" " ,  ncol(mat2 ) * (n1- n2 )), ncol= ncol(mat2) )
# - -
mat2 <- rbind( mat2 ,add_mat ) 
ret_mat <- ( cbind( mat1 , mat2 )  ) 
}else if( n1 < n2 ) {

add_mat <-  matrix( rep(" " ,  ncol(mat1 ) * (n2- n1 )), ncol= ncol(mat1) )
# - -
mat1 <- rbind( mat1 ,add_mat ) 
ret_mat<- ( cbind( mat1 , mat2 ) )

}else if( n1 == n2 ) {
# なんもしない
ret_mat <- cbind( mat1 , mat2 ) 
}

return( ret_mat )  #統合した行列を返す。
} #function

##- - - 先に外枠を完成させてから、中に埋めるものを完成させる方式- - - ##
#- - とりあえず普通のOLSとかordered logitとかの、シンプルな場合から考えていく - - -#

if(reg_function %in% c( "lm" , "clm")){

##- - -通常パターン- - - ##
## ====表側の情報 ==== ##
# 変数名
var_names <- as.character( info_list[[length(info_list)]]$Coef$Var )  
# モデル指標の名前
model_info_names <- as.character( info_list[[length(info_list)]]$Model$Var )  

#- - 行列形式に変換してk × 1の行列で保存,, 
# 変数名に関しては一行空きにする。 


# 表側の表示テキストを格納した行列
left_side <-  matrix(c(as.vector( matrix(c(var_names , rep(" ",length(var_names))), nrow=2,  byrow=T)), model_info_names) ,ncol=1)

## ==== 表頭の情報 === ##
 if( exp_coef  == T){
title_arr <-  c("β", " ", "Exp(β)" )
}else{
title_arr <-  c("Coef." , " " ) 
}
 #回帰係数のexp()を表記するか(引数③)によって2列or3列が変わる。
model_name_arr <- paste( "Model" ,1:length( info_list )  ,sep = "" ) #
#print( title_arr)
#print(model_name_arr)

# 表頭の表示テキストを格納した行列
upper_side <- matrix( c( mix_blank( model_name_arr , k = ifelse( exp_coef ==T , 2 , 1 ) ) , rep(title_arr,length(res_list )  )) , byrow = T , nrow= 2)

## ==== 表のcontents(回帰係数の推定結果) ==== ##
tbl_content <- NA #初期化
lower_side <- NA #初期化


lapply( info_list ,  function( info_elm  ){
#print(coef_to_txt(info_elm$Coef, exp_flag = exp_coef))
if( is.na( tbl_content  ) ){
#初回の処理
tbl_content <<- coef_to_txt(info_elm$Coef, exp_flag = exp_coef)
lower_side <<- mdl_to_txt( info_elm$Model,exp_flag = exp_coef) 
} else{
# 2回目以降の処理
tbl_content <<- cbind_v2(tbl_content , coef_to_txt(info_elm$Coef , exp_flag = exp_coef)  ) #横につなげていく
lower_side <<- cbind( lower_side ,  mdl_to_txt( info_elm$Model,exp_flag = exp_coef)  )
} #if
}) #lapply

## ここまで生成した文字列行列を統合
ret_mat <-  cbind( rbind( matrix( c(" " , " ") , ncol=1 ) , left_side ) , rbind( upper_side , tbl_content , lower_side ) )

#return(ret_mat) 


}else if(reg_function ==  "rq"){
##- - -Quantile Regressionの場合  - - -##

info_list2 <- list()
#- - 入れ物だけつくっておく
for( i in 1:length(info_list[[1]]$Model) ){

info_list2[[i]] <- list()
} #for

cnt <- 0


lapply(info_list , function(info_elm){
cnt <<- cnt + 1 #インクリメント
#まずCoefの情報を、順番に、格納していく
coef_cnt <- 0 
lapply(info_elm$Coef  , function( coef_info){
coef_cnt <<- coef_cnt + 1 
#print(">>>> <<<<<")
#print(coef_cnt)
info_list2[[coef_cnt]][[cnt]] <<- list()
info_list2[[coef_cnt]][[cnt]][["Coef"]] <<- coef_info


} )#lapply Coef

#print(info_list2)
# 次はModelの情報
model_cnt <- 0 
lapply(info_elm$Model  , function( mdl_info){
model_cnt <<- model_cnt + 1 
info_list2[[model_cnt]][[cnt]][["Model"]] <<- mdl_info
} )#lapply Coef
}) #lapply info_list



ret_mat_list <- lapply( info_list2 ,function(info_list){
## ====表側の情報 ==== ##
# 変数名
var_names <- as.character( info_list[[length(info_list)]]$Coef$Var )  
# モデル指標の名前
model_info_names <- as.character( info_list[[length(info_list)]]$Model$Var )  

#- - 行列形式に変換してk × 1の行列で保存,, 
# 変数名に関しては一行空きにする。 

# 表側の表示テキストを格納した行列
left_side <-  matrix(c(as.vector( matrix(c(var_names , rep(" ",length(var_names))), nrow=2,  byrow=T)), model_info_names) ,ncol=1)

## ==== 表頭の情報 === ##
 if( exp_coef  == T){
title_arr <-  c("β", " ", "Exp(β)" )
}else{
title_arr <-  c("Coef." , " " ) 
}
 #回帰係数のexp()を表記するか(引数③)によって2列or3列が変わる。
model_name_arr <- paste( "Model" ,1:length( info_list )  ,sep = "" ) #
#print( title_arr)
#print(model_name_arr)

# 表頭の表示テキストを格納した行列
upper_side <- matrix( c( mix_blank( model_name_arr , k = ifelse( exp_coef ==T , 2 , 1 ) ) , rep(title_arr,length(res_list )  )) , byrow = T , nrow= 2)

## ==== 表のcontents(回帰係数の推定結果) ==== ##
tbl_content <- NA #初期化
lower_side <- NA #初期化


lapply( info_list ,  function( info_elm  ){
#print(coef_to_txt(info_elm$Coef, exp_flag = exp_coef))
if( is.na( tbl_content  ) ){
#初回の処理
tbl_content <<- coef_to_txt(info_elm$Coef, exp_flag = exp_coef)
lower_side <<- mdl_to_txt( info_elm$Model,exp_flag = exp_coef) 
} else{
# 2回目以降の処理
tbl_content <<- cbind_v2(tbl_content , coef_to_txt(info_elm$Coef , exp_flag = exp_coef)  ) #横につなげていく
lower_side <<- cbind( lower_side ,  mdl_to_txt( info_elm$Model,exp_flag = exp_coef)  )
} #if
}) #lapply

## ここまで生成した文字列行列を統合
ret_mat <-  cbind( rbind( matrix( c(" " , " ") , ncol=1 ) , left_side ) , rbind( upper_side , tbl_content , lower_side ) )

return(ret_mat) 
}) #lapply info_list


#return(ret_mat_list) 


#内容をタテにつなげる
ret_mat <- NULL
lapply( ret_mat_list , function(x){
ret_mat <<- rbind( ret_mat , x ) 
}) #lapply

#return(ret_mat)
} # IF


# 最後にfileに出力する。
write.table(ret_mat , sep=blk , file=file_name , quote=F , row.names = F  , col.names=F )
return( info_list ) 
} #reg_to_excel

How to Use

例えばOLSの場合。

#推定
ols_res1 <- lm( ols_fml , data = test_data  )
ols_res2 <- lm( ols_fml , data = test_data  )
ols_res3 <- lm( ols_fml , data = test_data  )

# 推定結果をlistにまとめる
ols_res_l <- list( ols_res1 , ols_res2,ols_res3) 

# 上記関数により出力
reg_to_excel(ols_res_l , reg_function= "lm", file_name  = "/Users/Ronri_Rukeichi/Desktop/ols_reg.txt" , exp_coef = T )

できあがり

出力したtxtファイルを全コピしてExcelにpasteするだけで
f:id:ronri_rukeichi:20170629112024p:plain

あらふしぎ!


Enjoy!!

至言

◆Revolution

明治安田生命J2リーグ 第20節 長崎戦前々日 監督会見|ニュース|名古屋グランパス公式サイト


─青木選手、杉森選手はこれまでのシーズンで出場機会もなかなかありませんでしたが、どういう部分に成長の可能性を感じられるのでしょうか?

1つは、彼ら2人は人にないものを持っています。スピードであったり、しなやかさです。そしてもう1つは、その分これまであまりサッカーを勉強してこなかったということです。それを1個ずつ、最初から2つをやると分からなくなるので1個ずつ、こちらも我慢ですが何度もやれば、彼らの中でも自分でやるようになっていきます。ただ、まだまだ足りているわけではありません。才能とは全員の中に埋まっているもので、あとは頭の中がフリーになっているかどうか、向かってこれるかどうか、人のせい物のせいにせず自分に期待しているかどうか、それを教えると若い選手はどんどん伸びてきます。これはベテランでも同じですが、扉を開けられるか、開けたらまた違う扉が出てきます。これまでは開けようとしていなかった、開けようとしているがどう開けるのか分からなかった。それが徐々に分かるようになってきた


お前は頭の中がフリーになっているか?

「 1対21 」 のサッカー原論 「 個人力 」 を引き出す発想と技術 p.96

指導時には、「こうやって蹴れ」と強要する必要はありません。
指導者と選手は違うので、何が正解なのかは、選手が自分で見つけるしかないのです。

ですから、「こういう結果を出してみなさい」という教え方で、
自分で考えられるように持っていくとよい
と思います。

人を導くときは、細かいHow toではなく中間成果物で誘導しろ!


Enjoy!!

6/21 朝

◆体調まわりのlog

6/20 夜

体重:67.0kg(たしか23時頃に測定)

トレーニング:

腹筋ローラー 10× 3 + 5 × 1 セット

プッシュアップバー 10× 3 + 5 × 1 セット

スクワット(負荷なし):50回

 

6/21昼

体重:66.8kg


心を乱さず漸進してゆくことが大事に思う。
記録やトレーニングを2ヶ月くらい続けて行った時に、どのような変化が現れるのか。

 

◆将棋

ウォーズ

3戦を朝のうちにこなす。

1戦目 vs 初段(通算勝率0.626, 得意戦法△33角型空中戦法)

角換わりから右玉。相手の方は62金型から腰掛け銀を経て右玉へ。
ゆったりと受け潰され、歩切れになったところでカウンターをくらい完敗。
香車を上ずらされた後に角を打ち込まれ、無理やり龍をつくられたが、そのタイミングで攻め合いにいくべきだったか..

2戦目 vs 初段(通算勝率0.562 , 得意戦法: 対振り持久戦)

流れが悪いと感じたので、珍しく先手番だが四間飛車にする。
早めに角道を止められたので、振り飛車穴熊に。
銀冠の角頭を狙い先攻するも、駒損で苦しい形に。
しかし今度は相手が馬を切ってきたことで玉頭に嫌味をつけて逆転。
逃げ切り方針だったら負けていたか。

3戦目 vs 初段(通算勝率 0.616, 得意戦法:▲4五歩早仕掛け)

後手番だったのでいつも通りKKS。
棒銀を見せてきたので32金型で対応。
無理気味な仕掛けに対し、相手の居玉を咎めてカウンターから短手数で快勝。
今回は急戦だったが、とりあえずはKKSで相手が棒銀できたら32金型でよい、という結論でいいのだろうか。
実急戦になって、発展の仕方が難しいが銀上がって桂馬跳ねて一段飛車くらいか。

新兵器?

増田四段著、「堅陣で圧勝!銀冠穴熊」を買う。
段位者とやると対振り持久戦でもうまくいかない場合が多い気がする(終盤力の問題ももちろんある)
ので、最新の戦術をinputしたい。

増田4段、この本の著者インタビューをみても、
なかなか面白い人物のようである。応援したい。

Q8、好きな将棋の格言は?
「特にないです」

――ないんですか(笑)?
「ええ、格言とか、あまり学んでこなかったのでよく知らないんです」

――「玉の早逃げ八手の得」とかあるじゃないですか。格言を軸に考えたことがない、ということでしょうか。
「そうです。格言、意味ないですよ。場合によるじゃないですか。最近は玉と飛車が接近したほうがいいこともありますし。柔軟な考え方ができなくなります」

とくにここがいい。セオリーも時と場合によるし、
うまくいく条件・前提を常に考えておくということは、大事なこと。


 

17/6/19 夜

◆結局はフィジカルだよな?

体重計測

22:43計測 67.2kg(体脂肪率 25.0%)

トレーニング開始

プッシュアップバー&腹筋ローラーを購入。
これはやばい。腹筋が踊り出しそう。そしてトレーニング量も日々記録していきたい。

きょうは
・プッシュアップバーによる腕立て 10 × 3セット
・腹筋ローラー 10 × 3セット
である。


腹筋ローラーの使い方!初心者編

プッシュアップバーで大胸筋を鍛える!Tシャツの似合う胸板を作る効果的なトレーニング方法。

Enjoy!!

17/6/19

◆体重

17/6/19 7:45測定 65.8kg
排泄前後でだいたい0.6kgくらい違う。条件を整える必要あるかも。
自宅でのトレーニング器具がもう少しで届くので、トレーニング記録と体重の推移、できれば(近似でよいので)食べたものとカロリーの記録を毎日コツコツつけていくといいのでは。

◆将棋

千田六段@将棋フォーカス


異色の棋士千田翔太

動画で8:02〜あたりのところ、コンピュータ同士の棋譜を(前後の指し手=線を参照せずに)局面=点で形勢判断するトレーニングについて紹介。
もととなる棋譜は、「手入力で1,0000局面くらい入力した」とのこと。

細かいことを膨大にやるのが私のモットー

との言葉は、どの世界にも通ずるものだ。
もうちょっと言葉を足せば「細かいことを膨大に、素早く、的確に道筋付けてやる」ことが大事だろう。

矢倉左美濃急戦

これまでは見ようみまねで将棋ウォーズで使ったりしていた(それで格上の相手に一発入れる原動力にはなっていたが..)斎藤七段の本を買った。
常識破りの新戦法 矢倉左美濃急戦 基本編 (マイナビ将棋BOOKS)

46角型による対抗策に対して、いくつかの左美濃側の対応を解説してくれていて、なかなかの親切設計。
これまでは83飛型を使っていたのだが、これを選択するのは相手に正しく指されると難しいらしい。
これからは63金型でいこうと思う。

ただ、実戦的には(そこまで高い棋力同士の戦い出ない場合は尚更)、33角を上がらないと横歩を取られる場合が多いので
そのパターンが解説されていないのは片手落ち感がある。ただし、そこは次作できちんとカバーするとのこと...

ギアチェンジ

To-Be

締切を考えると、週末を迎えるころには、第ゼロ稿に直しを入れるようなフェーズに入っているようにしたい。
とりあえず、「書かれたもの」がなければパーティーは始まらないので、自分がどれだけのスピードで執筆できるか、その回復度合を試す意味でも、ぼちぼち原稿の形にしていかなければならない。

本日の目標としては、とりあえず4p(6400字分)を書きあげてみるのがさしあたっての目安か。

全量が10pなので、こんな感じで↓いけたらよいのだが

6/14(水) 4p
6/15(木) 4p
6/16(金) 2p 初稿完成
6/17-18(土・日) 自分で改善点出し
6/19-20(月・火)セルフレビューに従って修正
6/21 (水) 最終修正+印刷