How IT Works

プログラマーやっています。技術よりも人間学的なところが好きです。

最近始めた習慣とかについて

前書き

 最近は生活をちゃんと管理しようという気持ちが強いので、色んなことを習慣にしてみています。

 徐々に仕事や生活の仕事の質が改善できつつあるような気がするので、簡単に書きます。

タスク管理

一日の最初に計画を立てる

 あたりまえのような気がしますが、今までは一日分のTodoリストを書いて終わりでした。

 今はちゃんとこの時間にこのTodoを終わらせるというような時間まで指定して計画を立てます。

 一日にやる作業は色々なものがあって、書類を作成したり、コードを書いたり、メールを返信したりと色々なものがあります。

 作業にはそれぞれ向いている時間帯がありますし、あるいはずーっと同じことをしていると疲れるときもあるので、それらをもろもろ考慮して計画を立てます。

 常に計画があっているわけではありませんが、それを含めてPDCAを回していけると時間をよりよく使える気がします。

 ちなみに、Todo管理には「Jooto」、毎日やるべき作業や習慣には「Habitica」を使って管理するのが好きです。

ポモドーロテクニックを使う

 計画に関係する話なのですが、最近はポモドーロテクニックという考え方を使って仕事しています。

 簡単にいうと、仕事は25分間とにかく集中して5分間休むのがいいという方法です。このサイクルを1ポモドーロのカウントします。

 このテクニックのメリットは集中力を継続できることと、1ポモドーロが30分になるので自分の作業量をカウントしやすいことです。

 ちなみに、一日10ポモドーロできれば、いいほうだと聞いています。
   ポモドーロテクニックと計画を組み合わせることで、集中力は大分維持できるようになった感じがあります。それに定時を意識するより、短い時間を意識したほうがモチベーションが切れにくいですね。

 ちなみに、プログラミングだけは50分集中して10分休憩というサイクルのほうが好きです。

PDCAを回す

 最近はPDCAの本を読んでいて、PDCAを回すように意識するようになりました。

 下記の本は両方面白いのでお勧めです。

鬼速PDCA
鬼速PDCA
posted with amazlet at 17.02.11
冨田 和成
クロスメディア・パブリッシング(インプレス) (2016-10-24)
売り上げランキング: 318
自分を劇的に成長させる! PDCAノート
岡村拓朗
フォレスト出版 (2017-01-07)
売り上げランキング: 613

 大事なことはまず思いついたアイデアを全部書きだして、見直せるようにすることです。

 ここが改善できるんじゃないかと思ったら、とりあえず書きだしておいて時間のある時に振り返ります。

 また、改善案は必ずアクションまで落とし込んで、Todoリストにどんどん入れていきます。これを仕事に組み込めると少しずつ質が良くなります。  

まとめ

 こうやって見返してみると、自分でも大したことをしていないなという感じがします。

 しかし実感としては集中力を高く保ちつつ、仕事の質を改善できているのであえて記事にしてみました。

 なんでも見えるようにして、改善を続けていくというのはやはり大事ですね。

 このまま改善を続けていって、もう少しいい習慣ができたらまた書きます。

Linuxを1か月勉強してみた

 年末くらいから、新しくLinuxの勉強を始めました。

 自分の会社は開発環境、サーバーともにWindowsにロックインする方向に向かっていて、Linuxはほとんど触った経験がありません。

 しかし、Web業界ではむしろLinuxのほうが主流ですので、心機一転ということでLinuxの勉強を始めました。

 これから同じようにLinuxを触ってみたい方もいるかもしれないので、参考にやってきたことや感想を書きます。

学習したこと

 学習したことは以下のようなことです。

 Linuxを勉強したというよりは、シェルを勉強したというほうが近いです。

勉強方法

ドットインストールを見ながら打ちこむ

 まずは、ドットインストールの下記の講座を見ながら、実際の環境で動かしました。

 基本的には浅い内容ですが、導入としては役に立ちました。Vimに関してはvimtutorだけで十分かもしれません。

本を読んで足りないところを補う

 あとは本を読みながら、もう少し詳しいところを勉強しました。勉強するときはWebページより本のほうが好きですね。

 色々買いあさってみましたが、よかったのは次の2つです。

新しいLinuxの教科書
新しいLinuxの教科書
posted with amazlet at 17.01.21
大角 祐介
SBクリエイティブ
売り上げランキング: 4,843

 Linuxといいながら、ほぼBashの本です。とにかく説明がわかりやすく、振り落とされるということがないですね。

 実際にコマンドを打っている感覚に近い感じで読めます。値段は張りますが、基本を学ぶのであればこれで間違いないと思います。

 シェルスクリプト正規表現Vimといった関連が深い分野についても章を割いているのもいいですね。

 Vimの本です。実践というだけあって全く入門には向いていません。

 基本的なコマンドを覚えた今でもやや難しいですが、Vimらしい思考法を教えてくれるため、Vimを学ぶのであればぜひ読んでほしいです。

 Vimはどうやってコマンドを組み合わせていくか? というところが問題になるので、コマンドを覚えただけではまだ入り口のおうです。そこから1歩踏み出せる本です。

環境構築

 勉強中は実際にコマンドを打ったり、スクリプトを書いたりしました。

 Linuxをインストールするのではなく、Windows上でVirtual Boxを使って仮想環境を作って、そのうえで勉強していました。

 PCにインストールしてしまうと戻すのが大変なので、不要なPCがない限りは仮想環境で勉強するほうがいいと思います。

 ディストリビューションは軽量でありつつ、GUIがあるLinux Mintを使いました。マシンスペックがあれば、Ubuntuでもよかったかなとは思います。

 あとはWindows10が手元にあれば、Bash on Windowsという選択あるかなという気もします。

 環境構築は全面的に以下のサイト様を参考にしました。

 sstea備忘録 : VirtualBox で Linux Mint の仮想環境を構築する

感想

学習曲線が急

 Vimが特に顕著な例ですが、Linuxはすぐに誰でも使いこなせるという感じではないように感じました。

 細かい道具がたくさんあってそれを組み合わせて使っていくという感覚で、まずは道具を覚えていかないといけないという印象です。

 ただ、道具を使いこなせるようになったら、自分の好きなことはなんでもできる? という印象を受けました。

 なので、好きな人はいくらでも好きになれるOSなのですが、技術に興味がない人にとってはなかなかハードルが高いOSだと思いました。

かゆいところに手が届く

 上記の話に近いのですが、Linuxだと簡単なことを簡単にできます。

 例えば、「CSVファイルを検索して、特定の列から特定の行を取り出して集約する」という処理をLinuxであれば、awkではパパッとかけそうな感じでとても面白そうだと思いました。

 WindowsであればExcelで頑張るか、Visual Studioを立ち上げてC#スクリプトを書くかでしょうが、簡単な処理に無駄に時間をかけている感じが否めません。

 こういった思い通りに操作できるというのがとても魅力的です。

裏の仕組みがわかる

 GUIになれると裏で何をやっているかがブラックボックスになります。基本的にはそれで問題ないのかもしれませんが、エラーが起きたときや問題にぶつかった時に対応できません。

 Linuxを触っていると自分で一つずつ処理を打っていくので、勉強になります。GUIを使うとしても、一度CUIの文化になれると理解度が変わります。

今後

 MySQLやNginxを入れて、何か作れたらいいなと思っています。

 またもう少しLinux内部の仕組みもさらっと学べていければいいなという感じです。

まとめ

 Windowsしか触ったことがない開発者であってもLinuxに触ってみると勉強になります。一度体験してみるといいと思います。

寄せ書きについて

前書き

 最近はずっと、LinuxとかGitの使い方といった環境面の勉強に終始しているので、あまり人に伝えれるような進展はありません。

 なので、自分の趣味の一つである寄せ書き集めについて、振り返るエントリーを書こうと思います。

 卒業祝い、結婚祝い、退社祝い、遠くに行った友達にメッセージを送りたいという人の参考になればうれしいです。

これまで関わったもの

 まずは、これまで関わったものについて書きます。

  • 色紙
  • メッセージ人形
  • フォトブック
  • 動画
  • メッセージブック

色紙

 定番すぎて説明は不要かと思いますが、寄せ書きといえば色紙というイメージがあるくらい有名です。

 色紙の何がいいかといえば、手軽さです。寄せ書きで色紙を用意して文句を言われることはないでしょうし、値段も1枚あたりに大して値段をかけなくて済みます。

 さらに書くほうとしても2~3行のメッセージでいいので、お手軽です。寄せ書きをとりあえず作りたいという人は色紙がいいと思います。

 ただ、寄せ書きは不特定多数の人に書いてもらうのに向いていません。東京、大阪、名古屋というように書いてほしい人がちらばっているとかなり手間になります。

 学生はそんなことはないと思いますが、社会人の場合はよくある状況です。

 さらに絵や表現がうまい人にとっては、デザインの幅が少ないです。スタンプ、マスキングテープ、印刷、シールといったあらゆる手段を使いにくいです。

 なので、本気で誰かを祝いたいという場合は、寄せ書きでは限界があります。

 さらに言うと色紙は伝統行事的なものなので、大体渡す前にばれています。そのべタさがいいという人もいるのかもしれませんが。

 男子が多いとか、とりあえずで済ませたいという人以外は、もっと良い手段があるのではないかと思います。

エヒメ紙工 サイン用色紙 242×272mm 10枚入
エヒメ紙工
売り上げランキング: 346

メッセージ人形

 女子の先輩が卒業する際に送りました。自分が主導したわけではないです。

 先輩はずいぶん喜んでいたので結果的にいいとは思うのですが、個人的には色紙と同じ理由で好きではありません。

 とはいえ、色紙よりはまだ意外性という点で評価してもいいと思います。

フォトブック

 留学に行っていた同級生のために、とある人が企画してフォトブックを渡したことがあります。

 写真がメインで、ところどころに空いたスペースにみんなでメッセージやイラストなどを書き込みました。

 写真を使っている以上色々なデザインができますし、個々人ができるデザインもそれなりに幅があります。できないのは、印刷くらいでしょうか。

 ある程度適当に作っても見せれるものが作れますし、それなりにいい方法だと思います。

 詳細は聞いていませんが、フォトブックを作ってくれるサービスは巷にたくさんあるので、それを使ったと踏んでいます。

 それでもいいですし、適当な画用紙に写真を張るのもいいですね。

 ただ方法によりますが、不特定多数に弱いという欠点は解消されていません。また、編集者のセンスの裁量が大きく、みんなで作ったという感じにはなりにくいのが少々ネックですね。

 手軽さとデザイン性のコストパフォーマンスはなかなかいい選択だと思います。

動画

 同級生の結婚式と、後輩の卒業式で2回見ました。

 その瞬間の破壊力というか、感動を誘えるという点では、動画がもっとも優れた手段だと思います。

 思い出の写真を音楽に乗せて流したり、同級生で協力して踊りを踊るといった動画を見たことがあります。どちらもかなり手間がかかっているのがわかり、とてもよかったです。

 手間と技術、アイディアが必要で、とても難しいですが、挑戦する価値はある分野だと思います。

 ただ、編集者の裁量が大きすぎること、一人一人のメッセージが伝わりにくいのが難点でしょうか。

 全員の気持ちをちゃんと伝えたいのであれば動画はどうかなぁと思います。

メッセージブック

 フォトブックに似ていますが、こちらははがき大の白紙の用紙をみんなにくばって自由に書いてもらうという形式です。

 つまり、デザインは全部相手任せというやりかたです。自分は印刷もできる紙を選んでいました。

 集めた用紙はポストカードを入れるアルバムに入れて渡すのが無難かと思います。

 自分は製本してひもで縛るという形式を取りましたが、気持ちを伝えるという意味ではとても効果がありました。

 メッセージブックは用紙を郵送でやり取りするだけでよい、枚数をいくらでも増やせる、デザインは完全に自由、という点で自分は一番好きな方法です。個性がずいぶん出ます。

 女子とか、デザインが好きな人が多い場合はこれがベストかなぁと思います。ただ、他の参加者の忙しさや、情熱を加味して、フォトブックもいいかもしれません。

これからやってみたいこと

  • トランプ
  • 名刺
  • Webサイト

トランプ

 トランプでもカルタでもなんでもよいのですが、無地のカードが売っているのでそれを買ってきて表面に自由に書いてもらいたいなぁと思います。

 ただ実際買ってみると、トランプはかなりツルツルだったので、にじむのが少し怖いかなという感じです。

 あとは、印刷ができない、各種ペンが使いにくいので、結婚式の2次会くらいが適当な気がします。

 事前に時間があるのであれば、データを送れば作ってくれるサービスがあります。ただ、個人的には手書きの良さが出せないので、少し躊躇します。

【トランプ】 【トリックカード】 バイスクル BICYCLE ブランクフェイス 赤
マツイ・ゲーミング・マシン
売り上げランキング: 5,628
無地かるた 緑裏フチなし
奥野かるた店
売り上げランキング: 8,542

名刺

 名刺は裏表を十分に使いやすい、用紙がたくさんある、印刷できるという点でかなり優れていると思います。

 しいて言えば、メッセージ欄が小さくて少し難しい気はしますが、裏表を使えば何とかなるのかなという感じです。

 あとは結婚祝い、卒業祝いであれば、名刺入れと一緒に贈ることができるというのがとてもいいですね。

 たくさんメッセージを書きたければメッセージブックがいいでしょうが、それ以外なら名刺はなかなか面白いと思います。 

Webサイト

 手間はもっとも大変ですが、Webサイトでフォトギャラリー、メッセージギャラリーを作ってみたい気持ちはあります。

 寄せ書きのサービスはすでにあるようですが、手書きの良さを超えていない感じがぬぐいきれていないので、それならほかの手段のほうがいい気がしています。

 いつまでホストするのかとか、手書きよりもいいものができるのかというところが課題ですが、デザイン次第では可能性がある気がします。

 技術者の方であれば、挑戦してみたら面白いと思います。

これまでに行ったサプライズ

ディズニーのサイン

 メッセージカードの中に何枚かディズニーキャラクターのサインを入れて、驚かせたことがあります。

 ミッキー、グーフィーあたりは並べばサインしてもらえるので、頑張れば必ず手に入れることができます。

 相手がディズニー好きなら、結構喜んでもらえるのではないかと思います。

似顔絵

 似顔絵は最近は写真さえあれば、書いてもらえます。

 自分はFacebookあたりから写真を拝借したり、他の人へのサプライズの際の動画を借りて、Webサイト経由で似顔絵を書いてもらいました。

 全員が似ていたかといわれると微妙ですが、特徴はつかんでいたので喜んでもらえました。

 Web経由でなくとも、イベントで似顔絵を書く人を捕まえたり、店を持っている人に会いに行ってもいいですね。

まとめ

 どうでしょうか。意外に寄せ書きを集める表現方法はあることが伝わったでしょうか。

 自分は女子が多い学科出身なので、できるだけみんなの表現を生かす方法はないかなーと考えながら、寄せ書きを作ってきました。

 なので、そこらへんを生かすような方法は伝えられたかなと思います。ぜひ、大事な人を喜ばすために色々考えてみるといいと思います。

2016年に読んで印象に残った本

前書き

 最近、今年を振り返るエントリーをよく見かけるので、便乗して書きます。

 自分の場合年間読んでいる本は大体200冊くらい行くと思います。技術書5割、漫画2割、ライトノベル1割、その他2割というところでしょうか。

 あまりマイナーな作品は読まないのですが、それでも人に勧められるくらいには本は読んでいると思うので、書いてみます。

技術書

CSSシークレット

 本自体をCSSとHTMLで書いたという意欲作です。

 例えば、台形の描画をどうすればCSSで記述できるのか?という問いを2~6ページくらいをかけてといていくという形式で進んでいきます。

 CSS3で新しくできたプロパティを使って解決することが多いのですが、発想が少し飛んでいて業務で使うレベルをはるかに超えています。

 CSSを極める本というのが一番近いでしょうか。CSSには自信がある! という人にこそお勧めできます。

 自分もそれなりにCSSに慣れてきたと思っていたのですが、デザインセンスや技術へのこだわりのレベルの違いを強く感じながら読みました。

Web制作者のためのCSS設計の教科書

 こちらもCSSに関する本です。

 上記の本はCSSの技術について深く踏み込んでいくような本でしたが、こちらはCSSの最新スタイルについてわかりやすく説明してくれる本です。

 オブジェクト指向CSSとかBEMといった実際の業務に応用しやすい内容です。

 CSSの文法や書き方はわかっても、そこからどうやって進めばいいかと思っていたところでこの本に出会いました。

 CSS初心者から一つレベルを上げるには良い本です。

JavaScript Ninjaの極意

 タイトルで引いてはいけません。正直、自分もこのノリについていけないのではないかと心配しながら購入しました。

 中身も多少ユーモアに富んでいてまじめという感じではありませんが、JavaScriptの書籍の中ではダントツで面白かったです。

 CSSシークレットよりはどちらかといえば業務で使えそうな内容ですが、JavaScriptの機能を使い倒すという感じのコードが多く、はっとすることが多いです。

 実際的にはライブラリ、例えばJQueryやAngularを使っていれば、この本のレベルの知識はいらないのかもしれません。ただ、よりよいコードを書くということを考えたときに、ぜひこの本を読んでほしいと思います。

 JavaScriptは欠陥をよく指摘されますが、機能をフルに使えるととても楽しい言語です。なので、ぜひこの本を手にとってもらえたらと思います。

JavaScript Ninjaの極意 ライブラリ開発のための知識とコーディング (Programmer's SELECTION)
ジョン・レシグ John Resig ベア・ビボー Bear Bibeault
翔泳社
売り上げランキング: 133,870

漫画・ライトノベル

神様のバレー

 簡単にいうと、バレーの実業団を日本一に導いたデータアナリストが進学校の中学生に指導することとなり、全国優勝を目指すという漫画です。

 あらすじからわかるように、戦略、データといったものを楽しむ漫画で、ジャイアントキリングに似ています。

 主人公のコーチは本当に綿密に計画を立ててながら試合を進めていくので、自分だったらどういう作戦を立てるだろうかということを考えながら読めます。

 今年読んだ漫画の中では一番面白いです。

神様のバレー 1巻 (芳文社コミックス)
芳文社 (2014-06-27)
売り上げランキング: 24,563

サツリクルート

 タイトルの通り、殺戮+リクルートが主題の漫画です。

 就活生のうち、アクマに選ばれたものは契約を交わし、能力を得ます。「面接官のリアクションを倍増させる能力」や「面接官を惚れさせる能力」などです。

 その代わり、就職試験に落ちたら、命を奪われます。

 かなりぶっとんだ設定ですが、かなり爽快なストーリーにまとまっていて、面白いです。

 主人公たちは一応まじめに就活してるのでシュールな感じもしますが、納得できるようにオチをつけているのは本当にすごいです。

 興味があれば、裏サンデーをのぞいてみるといいでしょう。

urasunday.com

東雲侑子は短編小説をあいしている

 ライトノベルですが、ほどよく現実的な青春小説です。とても純粋できれいな恋が表現されていて、何度でも読みたくなる本です。

 嫉妬や将来への不安、相手への恨みといった暗い感情も出てきますが、それを飲みこみながら前に進んでいく感じが素敵です。

 基本的に自分は一般小説よりライトノベルが好きなのですが、それは人間賛歌の話が多いからです。現実的であることよりも、きれいな夢を見せてくれる話がすきで、まさにこのライトノベルはドンピシャでした。

 少し古くなっていますが、ぜひ読んでみてほしい作品です。3巻でまとまっているので、まとめて読めるのもいいですね。

 あと、主人公の東雲さんは本当にかわいいです。

趣味

サプライズプレゼント―大切な人を喜ばせる贈り物集

 サプライズプレゼントというと、例えば結婚式の動画や卒業生への色紙などが思い浮かびます。

 そういうときに「みんなこうしているからこれで、いいか」と納得しがちです。

 でも、ちょっと待ってください。人を喜ばせる方法はあなたが考えている以上にたくさんあります。例えば、

  • 無地のジグソーパズルにメッセージやイラストを書いて、プレゼントする。
  • 同級生の写真を印刷したオリジナルかるたを作り、それで遊ぶ。
  • クリスマスに時間指定して、愛の言葉を書いた手紙を届けてもらう。
  • プレゼントとして名刺入れをあげる。そのなかに、相手への気持ちを書いた名刺を入れておく。

 この本には本当にたくさんのアイディアがあります。あぁ、こんなアイディアがあったのか、と1ページごとに感動します。

 サプライズ好きの自分としてはよくネットで調べたりするのですが、この本以上にいいアイディアはそうそうないと思います。

 今年買った本の中では一番、影響を受けた本です。

サプライズプレゼント―大切な人を喜ばせる贈り物集
篠原 一貴 喜ぶ笑顔.com
ロコモーションパブリッシング
売り上げランキング: 615,574

まとめ

 200冊読んだ割りには、印象に残った本はすんなり出せました。役に立つ本は多いですが、感動できる本にはあんまり出会えていないのかなぁという気がします。

 特に趣味関連が少ないですね。どうしても読んでいる本のバリエーションが少ないので、時間があればもっといろいろな分野にとり組めたらいいのかなぁと思います。

 とはいえ、ここにあげた本はかなりお勧めできるものばかりです。ぜひ、一度は目にとってもらえたらうれしいです。

最近使ってみたツールと感想

前書き

 タイトルの通りです。最近使ってみたツールとその感想を書きます。

Slack

背景

 自分の会社のチャットツールはSkypeなので、今人気のSlackとはこれまで縁がありませんでした。しかし、下記のような記事を見つけて、勇気づけられました。

個人 Slack のススメ - Qiita

 一人でも大丈夫なんだと思い、思いきってSlackを使ってみました。

所感

Slackはご存知の通りチャットツールなのですが、自分はほぼメモ用途で使っているだけです。

 使ってみた感想としては、端的に使いやすいです。入力が簡単でレスポンスが早いです。それにメッセージの削除、編集が簡単なので助かります。

 今までメモ用途ではLineで一人しかいないグループを使っていましたが、こちらよりSlackのほうがはるかに手軽だと断言できます。

 スマートフォン用のアプリがあるのもいいです。

使っているチャンネル

  • todo
    • やるべきことをメモ。
  • memo
    • なんでも思ったことをメモ。
    • 消さない。
  • link
    • 気になったリンクをメモ。
    • 見やすい。
  • neta
    • ブログのネタ
  • diary
    • 日記

課題

 上記の筆者はRSSフィードtwitterをSlackに流して……という感じで運用していますが、ここら辺の感覚がまだピンときていない感じです。

 RSSは試してみたのですが、どうも別のクライアントを立ち上げるほうが楽でした。もう少し色々なものを流しながら、試してみようと思います。

Feedly

背景

 FeedlyRSSリーダーの1つです。基本的には英語です。

feedly. Read more, know more.

 もともとGoogle Readerを使っていたのですが、サービスが中止されたのでしばらくLive Dwango Readerに移っていました。

 ただ諸事情でRSSリーダーを分ける必要が出てきたので、せっかくなので別のRSSリーダーに移ることにしました。

所感

 とても見やすいです。英語なのもほとんど気になりませんし、Readerの見出しがサッと画面にでてくれるのがとてもありがたいです。

 LiveDwangoReaderの場合、すべての情報を最初に読み込みに行くので全文読まないと概要がつかめませんし、なにより遅いのが嫌でした。

 Feedlyは見出しもそうですし、すべての動きが警戒です。情報収集の速度がぐんと変わるので変えてよかったと思います。

 こちらもスマートフォンのアプリがあるようですが、基本的にRSSReaderはパソコンでしか見ないので使ったことがありません。

Toggle

背景

 Toggleは時間を管理してくれるWebサービスです。

 Toggl - Free Time Tracking Software

 趣味で作ろうとしているアプリが習慣管理系統なので、参考にならないかと思って導入してみました。

 基本的には時間を記録して、日々の行動を可視化するツールです。ボタンを押すと自動で時間を計ってくれます。

 何人かのプロジェクトで全員の作業と時間も共有できるようです。

所感

 UIはとても使いやすいです。入力がしやすいですし、動作も直観的です。

 シンプルでとてもわかりやすいツールで、基本的な機能は網羅しているように思います。

 ただ、やってみると自分はもう少し複雑なことをしたいんだなーと実感しました。もう少しタスクの階層をいじったり、反省を書いたり、予定を書いたりと色々なものと結びつけて時間を管理するとか。

 作りたいアプリの参考にはなりましたが、自分のやりたいこととは違うのであんまりピンとこなかったです。

まとめ

 色々とアプリを入れてみたのですが、最近のWebアプリは何となくデザインが似ていますね。最近のはやり何でしょうか。

 プログラマーとして自分はあまりアプリを使わないほうなのですが、最近の流れなどをするためにももう少し色々便利なものを取り入れていけたらいいなと思いました。

ASP.NET+Angular1.x+TypeScriptでTodoアプリのサンプルを作りました

前書き

 タイトルの通りAngular1.x系を使って、Todoアプリを作ってみました。

 基本的にはページを閉じるとデータが消えてしまうので実用性はありませんが、技術的な参考にはなるんじゃないかと思います。

github.com

完成イメージ

f:id:dexia2:20161218114830j:plain:w300

使用した技術

 GitHubのREADMEにも書きましたが、こちらにも一応書きます。

  • ASP.NET Core
    • VS2015で作成
    • APIとWebともに、ASP.NET Core上で動かしています。
    • C#
  • Angular1.x
    • Angular Resource
  • BootStrap
  • JQuery UI
  • TypeScript

特徴

Single Page Application(SPA)

 このアプリはページ遷移を行わないようなSPAになっています。画面の更新は基本的にAngularに任せるようにしています。

 また、データの取得はWebAPI経由で取得しています。更新や削除は今のところインメモリでやっています。

Windows FormsっぽいUI

 UIはJQueryUIのDialogを使用しています。

 この技術を選択した理由としてはAngularとの相性が良さそうだったからです。他のダイアローグのライブラリはiframeを使っているものが多く、Angularらしさがあまり出せない感じでした。

 その点、JQueryUIのDialogはDOMでダイアローグを表現するので、そのままAngularと組み合わせることができました。

 Angularと組み合わせているところは下のよう感じです。

// 画面のキーの採番
var guid = this.getGuid();

//ダイアローグを開く
$(`<div class = "dialog" id = ${guid}></div>`).dialog(dialogOption);

//ダイアローグにAngularのviewを差し込む
var $dialog = $(`#${guid}`);
var includeHtml = `<div ng-include="'${config.path}'"></div>`
var scope = angular.element($dialog).scope();
$dialog.append(this.$compile(includeHtml)(scope));

 viewの展開はng-includeを使っています。これをコンパイルして、ダイアローグに差し込むことで画面を表現しています。

 ちなみにGUIDが出てきていますが、これは画面のインスタンスごとの固有のIDになります。これを使って、画面を閉じたり、返り値をとったり、パラメータを受け渡ししたりしています。

TypeScriptらしい書き方

 TypeScriptを利用しているので、できる限りfunctionではなくクラスを渡してサービスやコントローラを定義するようにしています。

/**
 * Todoサービス
 */
class TodoService {
//省略。。。
}

app.service("TodoService", [
    "$resource",
    TodoService
]);

感想

 普通、Angular1.xを使ったSPAというとui-routerを使うものなのでこれは少し邪道な感じもしますが、一応SPAではあります。

 現状だと、戻る機能が使えなかったり、URLでの遷移ができないという欠点はありますが。

 とはいえ、Angular1.xの基本的な機能の使い方は押さえていて、Windows開発でよく使う技術(ASP.NETC#+TypeScript)で書いたので参考にはなるかなとは思います。

 興味があれば見てみてください。

生産性を高める習慣

生産性を高めるもの

 プログラマーであれば誰でも、「より少ない工数で問題を解決できる技術」を身につけるべく日々努力していると思います。

 新しいツールを導入したり、新しい設計方法を試してみたり、既知の問題は極力自動化したり……、様々な方法で生産性の向上に努めているはずです。

 こうした解決方法も常に導入していくべきだとは思うのですが、個人的にはまず個々人が自分の能力を出しきることが大事だと思っています。

 プログラマーとしての生産性というと知識量や経験がやはり重要だとは思うのですが、それ以外でも

  • 集中力の高さ
  • 視界の広さ
  • 論理的な思考力
  • 問題解決のための想像力

 といったアナログ的な能力も同じように高めていく必要があると感じています。

 一朝一夕でこうした能力を身につけることはできませんが、習慣を変えることである程度までは生産性を補うことができます。

 今回はそうした習慣について書きます。

生産性を高めるための習慣

焦っていることに気付く

 プログラミングをしていて難しい問題に当たると、どうしてもパニックになることがあります。

 そういうときはとにかく落ち着くことです。パニックになるときは大抵同時に2つ以上のことを考えているです。

 止まるということはとても難しいです。なんとなく答えが出そうという状況だと、もう少し頑張れば行けるんじゃないかという気持ちになります。

 そういう気持ちを抑えて、できる限り1つずつ小さな問題に分解して解いていくことです。これができるとできないでは、問題解決能力がずいぶん変わるように思います。

とにかく表現してみる

 プログラミングで詰まった時はいつでも、白紙の紙に思いついたことを書くようにしています。

 UMLだったり、アーキテクチャの図であったり、単語の羅列だったり、色々とパターンはありますが、困った時は何かしら視覚化してみると問題がよく見えるようになってきます。

 また、困った時は誰か捕まえて、相談してみるといいと思います。

 プログラミング上の問題を相談相手が解決してくれることはあまりないのですが、人に話すことで問題の全体像が見えてきます。

 問題の分解もそうですが困った時に、1歩立ち止まって別のアプローチをできると、問題解決のスピードはぐんと上がるように感じます。

 ちなみに、自分は会社のデスクにはいつもこのスケッチブックを置いておいて、何か思いつくたびに書きつけています。

 小さなアイディアやTodoはこれくらいの小さい紙がいいですね。所詮100円なので、躊躇せずに書けるのがいいです。いい悪い関係なくとにかく書くことで頭が働きます。

 うちの会社の優秀な技術者はみんな白紙の紙をいつも持ち歩いているので、やはり思考にとって表現は大事なんだろうと思います。

 そして、みなさんとにかく図やイラストでの表現がとてもうまいです。論理だけでなく、図解思考というのができているんでしょうね。

責任を持つ

 誰かが何とかしてくれる、どうせ納期には間に合わないという他人任せな思考をしていると生産性は落ちます。

 無茶な納期・仕様変更や不当な人事評価など理不尽なことを押し付けられると、責任を放棄したくなる瞬間は来ますが、そこで我慢してやるべきことができるのがプロの技術者だと思います。

 それに無茶に対してどのように対処できるのかというところを考えて仕事することで、プログラマーの能力というのは向上するものです。

 そのため、できる限り自分の仕事に責任を持ちましょう。そして、言われた納期で最高の品質を目指すようにしましょう。

 最初は理不尽に感じることのほうが多いですが、この習慣の有無が将来的に大きな差になると思います。

定時に帰ることを目指す

 残業してもいいと考えると、生産性はぐんと落ちます。納期がない仕事と同じようにだらだらしがちです。

 そのため、開き直って毎日定時で帰りつつ、任された仕事をこなせるように努力しましょう。

 こちらのほうが高い集中力をキープできますし、効率よく仕事をこなす方法を考えるようになります。

 そのため、最初から残業を頭に入れるような働き方ではなく、絶対に定時で変えると決めて働いたほうが自分の成長につながると思います。

集中を使いこなす

 集中している時間=作業時間です。集中していない時間は仕事の中ではできるだけ、減らしていかないといけません。

 大事なことは、細かい作業を間に入れないことだと思っています。電話もそうですし、メール・RSSReaderの処理などが作業の途中で入ると集中が切れやすくなります。

 そのため、できるかぎりそういった細切れの作業はプログラミング中に入れないように努力します。

 また、集中できる時間帯が誰にでもあります。自分は朝と昼一です。こういう時間に難しい作業を当てて、簡単な作業は後に回すようにします。

 あとは、集中するのには訓練がいると思います。毎日できる限り自分のできる最高の集中力を発揮する時間を作ったほうがいいと思います。

 人と話したり、twitterを見ながらだらだら作業する習慣がついてしまうと、それが癖になります。そのため、1日のある時間は一人でひたすら集中する訓練を積んでおくと生産性が上がります。

まとめ

 あたりまえのことが増えすぎて思ったようには行かなかったのですが、こういった思考や集中といったテーマに毎日取り組んでいくことが大事だと思います。

 どうしても、新しい技術や知識ばかり追いがちになるので、こういった無形の力もスポーツと同じでトレーニングしていくことでよりよい技術者になりたいです。

 今回の記事のような話は以下の本が詳しいです。

 浅く広くという感じでほとんど自己啓発本のような感じですが、納得できることは多いです。

 興味があれば、手を出してみるといいと思います。