k-tanakaのエンジニア日記

Changing合同会社を設立しての仕事・生活、エンジニアとしてのブログ

洗濯機を選ぶ - 縦型かドラムか

洗濯機が壊れて以降、インフルエンザを発症してしまい、そのおかげで規則的な生活を取り戻しました。洗濯物については、朝手洗いして、干して、太陽が当たってどんどん乾いていく様が気持ちよく、しばらく手洗いでも良いかなとも思っている次第です。

ただ、ずっとこのままというわけには行かないので、洗濯機を選ぶわけなのですが、おそらく買い換えたらずっと使うので、どうせなら洗濯乾燥機を買いたいなと思うわけです。しかし、乾燥機能を考えると、従来型の縦型洗濯機よりもドラムの方が構造的にも良いので、ドラムを買いたいところなのですが、うちのマンションの洗濯槽パンの位置関係などからスリムタイプしか購入できず、かつお金も無いのでなかなかに選択肢が限られるという感じです。

また、どうせなら日立かPanasonicが良いなぁとも思い始め、もはや洗濯機を買わない選択になってしまいそうな予感がしています。

縦型ならビートウォッシュが良いなぁ。

ドラムなら、日立のスリムドラムか、Panasonicのプチドラムが良いなぁ、という感じです。

安いので適当に買おうかなぁ…。

洗濯機が壊れて、洗濯機と昭和の女性の偉大さを知った冬

f:id:changing--k-tanaka:20160226010153j:plain

洗濯機が壊れました。機種は、すでにとっくに生産終了品の2005年製の東芝「AW-70GA」(メーカーサイト)です。 ずっと調子が悪かったのですが、それが気温が低いとスタートボタンが反応しないというものでした。

静電気の関係かなと思っていたのですが、4日前くらいから完全に反応しなくなりました。すでに10年なのでしょうが無いかなとは思うのですが、スイッチ以外は普通に動くので、なんだかなぁという感じです。

f:id:changing--k-tanaka:20160226010940j:plain すでに保証もクソもないので、とりあえず分解してみた(上蓋を外す必要なく、パネルだけ外せました。ねじ2つを外して右にずらせば取れます。)のですが、スイッチ部分のタクタイルスイッチの摩耗のようですね。 半田はあるので、交換すれば直りそうですが、防水のために基盤がコーティングしてあり、それが厄介そうで、もう買い換えしかないかなと思っています。

仕方が無いのでコインランドリーを探したのですが、近くになく、意外に料金が高そうで、さらに洗濯物も貯まっていたので、「こうなったら手洗いだ」と思い立って手洗いしました。

洗面所に水をためて洗剤を入れてゴム手袋で、押したりごしごししたりで汚れがガンガン落ちていくのは気持ちいいのですが、水を思いっきり吸ったバスタオルなどは重いし、面が多いし、後ですすぐときもなかなかすすぎきれない感じが大変でした。

なんとか全部の洗濯物を洗濯して、すすいだわけですが、腕がパンパンになりました。洗濯機が無い頃、家庭に居た女性は大変だなとつくづく思いました。また、洗濯機があるのが生まれてから当たり前でしたが、この機器が如何にそれまでの家事を変革させたか改めて分かりました。三種の神機と言われたのも分かります。

で、乾かすわけですが、上述のAW-70GAは、乾燥機は付いていませんが簡易乾燥機能が付いており、干す時間を短縮してくれていました。この機能の偉大さにもびっくりしました。乾燥が短いということは、それだけ水分が飛んでいるので、洗濯物は軽いということなんですよね。実際、手洗いして手で絞った後の洗濯物が重くてびっくりしました。

この手洗いの洗濯物がなかなか乾かないんですよね。私の住んでいるマンションは、風呂場に乾燥機能が付いており、それでなくとも換気だけで風が通るようになっており、基本的に乾燥は風呂場だけで済んでいましたが、手洗い洗濯物は乾燥機能を使っても乾かず、今日の朝から外に干して夕方まで干してやっと乾ききりました。

いや、ホント大変でした。

最近、当たり前のことを改めて実感するということばかりです。この洗濯騒動からもいろいろな当たり前のことを再度実感しましたし、お金が無くなるにつれて、少しのお金の重みをホントに痛感します。 いろいろな事があって、押しつぶされそうな気持ちになったりもしていますが、なんとか一つ一つ立ち向かっていっています。とりあえず洗濯機を購入するお金は無いので、貯めないように細々手洗いしていこうかと思っています。汚れが落ちていくのは楽しいんですけどね。

#FuelPHPでコアクラスを拡張・置換してDBのorder_byでDE::exprを利用できるようにした話。(COLLATE utf8_unicode_ciしたかった)

追記 別に拡張しなくても解決しました−。

<?php
->order_by(DB::expr('`column` COLLATE utf8_unicode_ci'), 'asc');

とすれば良かっただけ(第一引数は、DB::exprに対応)でした。 一応、下記も残しておきます。


手軽に結果を出せる言語としてPHPを利用してきました。PHP7になってパフォーマンスも上がり、やや言語人気ランキングで下がってきているとはいえ、未だ高い人気のPHPです。そのPHP用のフレームワークも大量にあるのですが、私は動作の機敏さとシンプルさからずっとFuelPHPを利用しています。(昔、CakePHP1.3から初めてFuelPHPに移った時のパフォーマンスの差にはびっくりしました。)

そんなFuelPHPですが、コアクラスの拡張と置換がわりと自由という特徴も持っています。とはいえ、バージョンアップなどで問題を起こしかねないということもあり、あまりコアクラスの置換は行われず、拡張に留まるのがほとんどです。かくいう私も、拡張は何回か行っているものの置換えはあまり行ってきませんでした。しかし、行うことになったので、その内容を共有したいと思います。

きっかけは、order_by

varcharカラムで、半角数字と全角数字が混在するカラムについて、半角と全角を区別せず、数値順に並び替えを行いたかったのですが、ORDER BY column ASC では、上手くいきません。 調べてみると、 ORDER BY column COLLATE utf8_unicode_ci ASC であれば、行けることが判明しました。そこで、FuelPHPのDBクラスを用いて次のように書いてみたわけです。

<?php
//普通にDBクラスでDB::exprを使ってみる
$query = DB::select()->from('table')
                    ->order_by('column', DB::expr('COLLATE utf8_unicode_ci ASC'));

そうすると、上手く動作しません。ソースを見てみると、order_byの2つめの引数は、direction(方向)として「ASC」か「DESC」かのどちらかでないとダメで、ダメなら自動でASCになるようになっています。

で、上記を利用したくて、該当部分にDB::exprを利用できるようにしたくなったわけです。

コアクラスの拡張の仕方

公式ドキュメント(Core の拡張 - 概要 - FuelPHP ドキュメント)によると、コアクラスの拡張には、以下の2種類があります。

  • コアクラスの拡張
  • コアクラスを拡張して置換え

拡張は、文字通り拡張して利用するだけで、コア側からそのクラスを利用されることは無いが、置換えの場合にはその置き換えたクラスをコアも利用するということで問題が生じうるということでした。 今回拡張したいクラスは、DBクラスが、order_by部分を設定する関数「_compile_order_by()」が存在するDatabase_Query_Builderで、このクラスは、コアクラスであるDBクラスから呼び出されて利用されクエリを構成しているので、拡張したものを利用されないと意味がありません。そのため、「置換え」となります。

実際の拡張と置換え

ファイルをコピペ

fuel/core/classes/database/query/builder.php を fuel/app/classes にコピペ 置換えになるので、弄る部分以外はそのまま利用したいのでコピペしました。

関数を弄る

コピペしたbuilder.phpの、一番最初のコメントとnamespace Fuel\Core;を削除(不要?)

_compile_order_by()関数を以下に変更

<?php
     protected function _compile_order_by(\Database_Connection $db, array $columns)
     {
         $sort = array();

         foreach ($columns as $group)
         {
             list($column, $direction) = $group;

             if ($direction instanceOf Database_Expression)
             {
                 $direction = ' '. (string) $direction;
             }
             else {
                 $direction = strtoupper($direction);
                 if(!empty($direction)) {
                     // Make the direction uppercase
                     $direction = ' ' . ($direction == 'ASC' ? 'ASC' : 'DESC');
                 }
             }

             $sort[] = $db->quote_identifier($column).$direction;
         }

         return 'ORDER BY '.implode(', ', $sort);
     }

$directionが、DB::exprインスタンスであれば、スペースを付与して、文字列としてそのまま格納する、という変更ですね。

fuel/app/bootstrap.phpに行を追加

fuel/app/bootstrap.phpに以下のような行があるので、

<?php
\Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
));

当該配列に次のように追加

<?php
\Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
    'Database_Query_Builder' => APPPATH. 'classes/builder.php'
));

で、完了

これにて完了です。これで、無事に order by 出来ました。

違う話

はてなブログのMarkdown記法によるコードシンタックスハイライトは、```phpで囲むだけでは、足りず<?phpで始めないと行けないのですね。。。

初めてちゃんと請負開発をしてみて苦しんで、ふと「UNIXという考えた」を読んだら貴重な経験だったと自覚出来た件について

年末までの一ヶ月半、起業して初の請負開発で苦しんでいました。

慣れた内容での開発ではあったので大丈夫だろうと思っていましたが、全然ダメでした。普通に仕事しながら社内ツールを作るというのとは、全く違うということに気付いてからは、「やばい間に合わない、どうしよう」という不安と毎日戦って、もう一つ別の仕事も併行して行っていて「挑戦だ、とか言ってた一ヶ月間の自分に小一時間あたり説教したい」とか思ったりしながら、何日徹夜したかわからないくらいがんばって、なんとか打ち合わせに間に合わせた感じです。

ホントに自分は未熟だなと感じ、苦しみました。とはいえ、なんとかなるくらいにはスキルがあったのも、自分の今までのがんばりがあったからこそですから、それはそれで、無駄に卑下せず、よりスキルを磨くモチベーションにしていきたいと思っています。

徹夜しても効率は上がらないとか、そういう当たり前の、頭では分かっていたことも、体にたたき込まれるレベルで再確認できました。納期には余裕を持って、仕事は前のめりで片付けていかないと行けないということも分かりました。 起業してからこっち、分かっていたことを再度再確認するということが多くて、でもなんというか、それらも一度は通らないと行けない経験をすごいスピードで駆け抜けた感もあり、必要なことだったのかなと変に納得しています。

そんな仕事で、まだ終わって無くて、もうちょっと改善と修正をして、それが終わったら別の仕事もしなければいけないわけなのですが、ちょっと燃え尽きた感じがあり、体の重みも取れないので、積ん読してある本を読みはじめました。それが、UNIXという考え方―その設計思想と哲学という書籍です。

名著とされる薄い本です。UNIXは、Linuxの原型ともなったOSで、その考え方も含めてまるっとLinuxに引き継がれていると思いますが、その考え方は、別にOSという枠に囚われず有効であるということが説かれています。

この本を読み進めると、自分がこの1ヶ月強で経験したことと符合する場面がいくつも出てきて、「あぁ、開発者なら誰でも通る道なんだな」と救われる思いでした。作って、削除して、作り直して、修正して、一部削除して、やり直して、そういうことも良くあることなのですよね。

そう考えると、この1ヶ月強の経験というのは、実は開発者という自分にとってかけがえのない経験だったのでは無いかと思えました。まして、それでお金を頂くわけで、そうやってちゃんと起業の1歩を踏み出せたということはとても重要なことなのだなと思いました。

で、違う仕事にまた苦しんでいる私でした。がんばります。

UNIXという考え方―その設計思想と哲学

UNIXという考え方―その設計思想と哲学

FuelPHPでdocxファイルとpdfファイルを出力する

本記事は、FuelPHP Advent Calendar 2015 - Qiita の12/22分になります。

初めて参加するのですが、仕事が立て込んでて、丁寧に書けないと思います。ほんと申し訳ないです。

 

さて、 FuelPHP を使って、docxファイルとPDFファイルを出力するにはどうしたらよいかについて、手順を簡単に解説したいと思います。Webアプリを作る面でも、社内ツールを作る面でも、これらが出来ると非常に便利です。

 

前提

・docxファイル(*.docx)とは、Microsoft Word 2007以降で採用されているXMLベースの文書ファイルです。なお、別にMicrosoft Wordでだけ使えるというわけでなく、標準化されています。そこらへんは、Office Open XML - Wikipedia を参照のこと。

 なお、Microsoft Word 2003以前の文書ファイル形式(*.doc)を出力するライブラリは、今の所無いですし、これからも出ないと思います。(Office 2003はサポート切れですし。)

 

・PDFファイル(*.pdf)の説明は割愛します。

 

docxファイルの生成

phpoffice/phpword - Packagist というパッケージを利用します。

FuelPHP最新版においては、パッケージ管理にcomposerを利用しており、ここでもcomposerを利用して、上記パッケージをインストール、利用したいと思います。

 

composerからパッケージインストール

composer.jsonの、requireという部分に次を足します。(※コード表示がはてなブログの見たまま編集だと出来ないのですが、後で直します。) ※あとから編集モードを変更できなかったので、この形式でご勘弁願います。。。 

"phpoffice/phpword": "0.12.1"

 

 あとは、ターミナルから、

composer.phar update

 

で導入できます。

 

PHPOffice/phpwordで出力

手順としては、PhpWordオブジェクトインスタンスを生成し、そこから派生してsectionオブジェクトや、tableオブジェクトに文書の内容を入れていき、最後に、word2007形式でファイル出力用のオブジェクトに渡して、出力するという形です。

 

・PhpWordオブジェクトインスタンスを生成

$phpword = new \PhpOffice\PhpWord\PhpWord();

 

・派生してsectionオブジェクトに文書の内容をいれていく

$section = $phpword->createSection();

 

//font_style

$fs_default = array(
                        'size' => 10
                );

 

//paragraph style

$ps_default        = array(
                        'lineHeight' => 1.1, //行間
                        'align'      => 'left'
                );

 

$section->addText('コンテンツ内容の追記', $fs_default, $ps_default);

 

 ・word2007形式でファイル出力用のオブジェクトに渡して、出力する

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007');

$objWriter->save($path . $file_title);

 といった形になります。

公式ドキュメントが、Welcome to PHPWord’s documentation — PhpWord 0.12.0 documentation から参照できます。上記のベースが分かれば、分かりやすいのではないかと思います。

すいません、文書のプロパティ、テーブル、テンプレートからの出力などについても記載したかったのですが、時間が無いので割愛します。今度加筆予定です。

※加筆は以下。

 

文書のプロパティ設定方法

文書を構成する設定、デフォルトフォントサイズや、 用紙の設定、用紙の向き、作成者などの名称設定が可能です。

//デフォルトフォントサイズ
$phpword->setDefaultFontSize(12);

//デフォルトフォント
$phpword->setDefaultFontName('MS P明朝');

 

//ドキュメントプロパティ
$properties = $phpword->getDocumentProperties();
$properties->setCreator('作成者名称');
$properties->setCompany('作成組織名称');
$properties->setTitle('文書タイトル');

 

また、各セクションもそれぞれマージンなどが設定可能です。

$section      = $phpword->createSection();
$sectionStyle = $section->getSettings();
$sectionStyle->setLandscape();
$sectionStyle->setPortrait();
$sectionStyle->setMarginLeft(567);
$sectionStyle->setMarginRight(567);
$sectionStyle->setMarginTop(567);
$sectionStyle->setMarginBottom(567);

で、このマージンの設定なのですが、単位がピクセルではなく、twipsという単位が使われます。1twipsは、1/1440inchとのことです。そうすると、

1440twips = 1 inch = 2.54cm

567 twips = 1cm

A4サイズ 210mm×297mm だと、(およそ) 8.26inch × 11.68inch、11,894 twips × 16,819 twips

という感じです。

なお、ここらへんは便利な関数が用意されており、下記の関数でインチとセンチからtwipsに変換して値を返してくれます。

$one_cm_twips = \PhpOffice\PhpWord\Shared\Converter::cmToTwip(1);

$half_cm_twips = \PhpOffice\PhpWord\Shared\Converter::cmToTwip(0.5);

$one_inch_twips = \PhpOffice\PhpWord\Shared\Converter::inchToTwip(1);

  

ヘッダ・フッタの追加

ヘッダとフッタは、下記のようにヘッダ変数を生成し、そこに普通にセクション変数と同じような形でコンテンツを追加することが出来ます。

//ヘッダー
$header = $section->addHeader();
$header->addText('ヘッダー', $fs, $ps);


//フッター
$footer = $section->addFooter();
$footer->addPreserveText('{PAGE} / {NUMPAGES}', $fs, $ps); //ページ番号 / 総ページ番号

 

テーブルの作成

表を作成するには、セクション変数からテーブル変数を作り、当該テーブル変数にaddRowで行を作り、addCellで列を追加していくという形になります。

幅や高さは、やはり同じくtwips単位になります。

//テーブルのスタイル
$table_style = array(
'cellMarginTop'=>30,
'cellMarginLeft'=>30,
'cellMarginRight'=>30,
'cellMarginBottom'=>30
);

 

//スタイルを設定して、セクションにテーブルを追加
$table = $section->addTable($table_style);

 

//セルのスタイル
$cell_style = array(
'valign' => 'center',
'align' => 'left',
'borderTopSize' => 5,
'borderLeftSize' => 5,
'borderRightSize' => 5,
'borderBottomSize' => 5
);


//行を追加 - 数値は高さ
$table->addRow(140);

 

//行にセルを追加
// addcell(幅, スタイル)->addText('内容', フォントスタイル, パラグラフスタイル)
$table->addCell(1350, $cell_style)->addText('1行目の1列目', $fs, $ps);
$table->addCell(3650, $cell_style)->addText('1行目の2列目', $fs, $ps);
$table->addCell(1150, $cell_style)->addText('1行目の3列目', $fs, $ps);
$table->addCell(3850, $cell_style)->addText('1行目の4列目', $fs, $ps);

 

 

もう一つテーブルを追加したい場合には、同じセクション変数から、別のテーブル変数を生成して、テーブルを追加していきます。

$table2 = $section->addTable($table_style);

 

といった感じです。

 

改行したいときは

テキストの改行は、<w:br/>というタグになります。複数行のテキストを出力したい場合には、以下のような感じで追加すれば複数行で出力されます。(なお、phpoffice/phpwordでは、バージョンが古いと対応していません。)

preg_replace('/\r\n/',"<w:br/>",$text);

 

 

pdfファイルを出力する

FuelPHP用のPDF出力用パッケージがあります。fuel-pdfというパッケージです: TJS-Technology/fuel-pdf

 

 同パッケージは、それ自体がPDF出力機能を有するのではなく、PDF出力機能を持つライブラリのラッパーとなっています。対応しているのは、fpdf/mpdf/tcpdf/dompdfの4つです。日本語への対応(というよりもUTF-8への対応)などを考えると、tcpdfかdompdfのどちらかをお勧めします。

 

ここでは、tcpdfを例に紹介します。(私が普段使っているためです。今から習おうという方は、dompdfが良いかもしれません。)

 

インストールと設定

oil (FuelPHP公式のコマンドラインツール) からインストールも出来ますし、手動でパッケージフォルダに入れることも可能です。

 

・Oil

php oil package install pdf

 

・手動

fuel/packages フォルダ以下にパッケージのフォルダごと入れる

 

※いずれにせよ、namespaceとフォルダ名を一致させるため、fuel/packages/pdf フォルダとなるように。そうすると、 fuel/packages/pdf/classes/pdf.phpのpdfクラスの読み込みが可能になります。

 

実際に出力する

TCPDFは、通常通りPDFオブジェクトにドキュメントの内容を入れていく方法と、HTMLを変換する方法があります。

HTMLを変換する方法は、手軽ですが使えないタグがあったり、CSSが効かなかったりします。

 

出力コード

//fuelpdfのロード(fuelpdfのフォルダ名をpdfにしている)

Package::load('pdf');

 

//tcpdfのロード。A4縦UTF-8で開始

$pdf = Pdf::factory('tcpdf')->init("P", "mm", "A4", true, "UTF-8");

 

//ヘッダ・フッタ無し

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

 

//紙の余白(左、上、右)

$pdf->SetMargins(19.2, 21.2, 18.6);

 

//コンテンツ量に応じて自動でページ追加
$pdf->SetAutoPageBreak(false);

 

//1ページ目の開始
$pdf->AddPage();

 

//日本語フォントの設定とフォント色設定

$pdf->SetFont('kozgopromedium', '', 14, true);
$pdf->SetTextColor(0, 0, 0);

 

続き: HTML出力パターン

$html = <<< HTML

<p>PDF出力機能のテスト</p>

HTML;

 

$pdf->writeHTMLCell($w=0, $h=0, $x='', $y='', $html, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);

$pdf->Output($save_dir.$save_pdftitle, 'FI');

 

 続き: 通常パターン

//Cell( $w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign )

 $pdf->Cell(0,12,"PDF出力機能のテスト",0,1,'L');

$pdf->Output($save_dir.$save_pdftitle, 'FI');

 

その他

PDFは、フォントを埋め込まれたPDFとそうでないPDFがあります。PDFは、生成したPDFの表示結果が一定なために便利なファイル形式なのでフォントを埋め込むべきです。幸いtcpdfは埋め込みに対応しています。

埋め込むためのフォントを用意する必要があり、そのフォントの生成や設置などは、下記サイトを参照して下さい。また、マニュアル類のリンクも以下に記します。

(※デフォルト日本語フォントの小塚フォントは、あまり綺麗と思いません。IPA明朝やIPAゴシックをお勧めします。)

 

関連サイト

 

時間がかかりましたが、加筆はこれで終了です。もっと丁寧にもっと網羅的に書きたかったのですが、申し訳ありません。時間が無く、難しいです。。

 

 

 

歩こう、歩こう、私は元気

今日は、立ち上げについて残ってた事務処理をほぼ終わらせました。あともうちょっとありますが、あとは郵送で全部終わります。

そのため、開発業務は一休みで、書類作成と提出とで歩き回りました。

歩くと精神の安定に寄与するといいますが、実際にそんな感じで、気持ちがすっきりしました。起業したら毎日歩こうと思っていましたが、歩くよりも色々やりたいことがあったりもしてやらなくなりましたが、毎日歩きたくなりました。

 

というのも、対処療法としての散歩よりも、予防としての散歩が大事だと気付いたのです。散歩に限らず、対処よりも予防するほうがコストが断然低く、自分の気持ちや体も快適に維持できるということを心底感じたからです。

 

こういう理屈で理解しているだけのことを、最近は実感として感じて深く見に染みいってくるというのが最近多くて、学ぶことが多いなと感じています。

 

また、先ほどまで現在の案件の残タスクを全部洗い出しました。頭の中でコードも書いてますので、だいたい洗い出せたと思っています。

割と大変ですが、なんとか終わりそうだなと感じました。明日から頑張ってタスク処理していきたいと思います。

 

 

ここ十数日、なかなか眠れません

ここ十数日、なかなか眠れない日々が続いています。今日もこんな時間まで寝付けないでいます。

やるべき仕事があって忙しいのはその通りなのですが、眠りにつけないのは、それだけではないことにさっき気付きました。一度、ブログにまとめて吐き出しておこうと思って、ベッドから出てきてこのエントリーを書いています。

 

眠りにつこうとする時、何か不安でたまりません。そんなときに思ってしまうのです。

「なぜもっと貯金をしておかなかった」「なぜもっとちゃんと計算して起業しなかった」「週末起業がよかったのでは」

 

起業したことについては、散々考えて、あの時に今の自分が戻っても同じ結論になります。そう考え直して、いつもそれで納得します。結論ではなく、お金が無いことへの不安があるのだと思います。現在は受託開発をしていますが、それが続くとも思えませんし、そもそも受託開発がしたくて起業したわけじゃありません。でもだからといって、立ち上げようとしているサービスが、イケるともマネタイズ出来るとも分かりません。それら経験が全てプラスになることは分かっていますが、たぶん、また挫折するのが怖いのです。覚悟したはずなのに。

 

また、寝る前は、現在作業中の仕事について、こうしなきゃああしなきゃというのが浮かんできます。実際に整理されて浮かぶので、良いアイデアや良い整理のされ方をした道筋も浮かびます。忘れそうでかつとても重要そうなものはスマホにメモします。

たぶんこう思っているのです。「明日の自分は今日のことは忘れていて手間取るのではないか」「もっと効率的に出来るはずだ」「今日はもっと効率化出来たのでは」「なぜもっと長めに納期を取らなかった」「あの部分が上手くいかないのはなぜだ。何か見落としてる。」「終わるのか。いや終わる。ほんとに終わるのかな。」

 

納期については十分なはずです。明日はまとめて事務処理を行う予定なので、その際に残タスクの全洗い出しを行います。それでかなりすっきりすると思います。でも、一番最初に全行程を書き出すべきでした。ここは驕りでしょう。いえ、実際頭に思い描いた通りであればもう終わっていたのですが、予定外のことは起こりますし、自分も言うことを聞いてくれません。だから、最初に実際に頭のなかだけでもコードを全部書いて、全部工程表に落とし込む時間を取らなければダメだと分かりました。その時間は無駄だと驕っていたのですが、全体として見れば、そして自分も自分を完璧にコントロールできないという純然たる事実に照らしてみれば、とても重要なことだと分かりました。

日々集中していないかと言えば、眠れていないので、その点は問題ですが、きちんと集中出来ています。ここ数日は、Togglによるトラッキングによると毎日10時間は集中して机に向かっています。もっと出来そうですが、悪くはありません。集中してやるということを考えると多いとも言えます。

 

以前から、自己啓発本や仕事術の本などを読みあさってきていました。理屈では分かっていて、実際に実践して分かっていることと、人から話を聞いたり、他人の仕事や会話を見て分かったりする間接的なことと、理解の程度に差はあれ、多くのことを理解していたつもりでした。

ただ、いざ一人で代表としてやってみると、分かってなかったことを理解すると同時に、実際に生々しく分かることが多いです。「納期は甘くとらない」「自分はそのままでは完璧にコントロールできない」「仕事をしている時間ではなく、いかに集中するか」「睡眠が大事」などの、自己と仕事をいかにコントロールして生産性を上げるかということについてです。

そういえば、以前はそうでもなかったけども有用だと感じるツールに、上述もしたTogglなどのタスク時間トラッキングツールがとても良いです。自己管理と、自分が今何をしているか、自分がどれだけがんばったか or サボっているかが分かります。それはやる気と集中に繋がります。「すべては集中だ」なんて言葉もどこかに書いてあった気がしますが、まさに、と感じています。

 

結局、恐怖と自分への疑問や猜疑心に苛まれていて、眠れないのです。

 

怖い。今の生活や、自分のプライド、お金、信頼、評価、その全てを失う気がして。

でも、どれも別にたいしたものじゃない。そう知っていたはずなのに、今の起業してからの生活、毎日自分の好きな勉強と仕事を、起きてから寝るまでの間ずっとやるという生活の幸せを知ったからなのか。現実にお金が減って不安になったのか。将来を考えて不安になるのか。

 

起業しようと思ったとき、そこまで前向きじゃ無く、仕方なくの側面も大きく、「ダメなら野垂れ死ねば良い」と思っていて。今でもそう思うところがある。でも、それは覚悟としてなら良いけど、自棄や現実逃避としてならダメだ。当時はそうだったような気もする。もう一度考えて、それを覚悟に変えないといけないのかもしれない。

 

不安も恐怖も自分への猜疑心もある。それは分かった。

でも、結局、それはどうしようも無い。

 

だから、今やるべき事は何かを考えないと行けない。

明日はそういう日にしよう。結局はそれが一番効率的だと、今は生々しく分かる。

 

忙しくて、また自分の心を殺さないといけないことばかりで、以前は死んでた自分の感覚が、仕事を辞めて、やっと全部蘇った気がする。弱気になるのも、自分への自身の揺らぎも、戻ってきた。でも、それは挑戦しているからだ。自分が知らない領域へ踏み出しているからだ。結果は分からない。でも、それが、社名につけた「Changing」変わり続けるというのにもふさわしい。

 

おォ、綺麗にまとまった。

…お茶のんで寝よう。

 

 

不安をなくす技術 (フォレスト2545新書)

不安をなくす技術 (フォレスト2545新書)

 

 

 ※↓秋からずっとハマってて飲んでます。美味しくて落ち着く。

[2CS]伊藤園 おーいお茶 絶品ほうじ茶 (2L×6本)×2箱

[2CS]伊藤園 おーいお茶 絶品ほうじ茶 (2L×6本)×2箱