ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
ラベル プログラミング の投稿を表示しています。 すべての投稿を表示
2015/01/08

2014年の反省と2015年の目標

あけましておめでとうございます。
2012/01/08に始まったこのブログも
3周年を迎えました。
2013年は117記事でしたが、
2014年は72記事となって減少傾向です。
細かい Tips などは Qiita
書くようになったので
wada811(Qiita) もよろしくお願いします。
昔からの人も最近からの人も
2014年、お世話になりました!
2014年のエンジニア人生を振り返って
2015年の目標を立ててみようと思います。

2014年

結婚した

撮った写真を披露宴会場のスクリーンに表示するシステムが3万円くらい、と
結婚式の2週間前に TV でやっているのを見て
こんなのすぐできる!1人日程度だろ?と思って写真アップロードシステム作ったのは良い思い出でした。
実際は細切れにしか作業できなかったので総日数としては3日くらいかかりましたが。
借りてたさくらのVPSにPHPをインストールしてなかったとか
ドメインを取ってなかったので契約からスタートとか色々ありましたが、
開発だけなら1人日程度でできたと思います。
wada811/wedding.wada811.com
とにかく時間がなくて画面も3枚だけだったので手っ取り早く素の PHP で作りました。
脆弱性とかはないと信じたい。。。
開発で一番時間がかかったのは PDO の薄いラッパーを探すことで、
プリペアドステートメントでクエリ発行できるやつが見つからなかったので仕方ないから自分で作りました。
あとは、CSS3 の transform をアニメーションの調整くらい。
関連記事
さくらのVPSにスタードメインで取得した独自ドメインを設定してみた
jquery.transform.js で CSS3 の transform をアニメーションさせる
exif-js と ios-imagefile-megapixel でスマホからの画像アップロードのプレビュー表示に対応する

Androider としての技術力を更に高める

どちらかというとライブラリ作ってた感じ。
wada811/Android-DialogFragments
wada811/Android-Material-Design-Colors
カメラのライブラリも作ってほぼほぼできていたけど放置していて完成したのかどうかも忘れている現状…。
カメラのライブラリは設計がいいのかどうかもわからなくて、
他の人がカメラアプリ作るときどんな感じに作っているのか知りたい。
The Android Arsenal - LandscapeVideoCameraとか、
そこの See Also とか見ればわかるかな。

新しい言語を学ぶ

Ruby on Rails 始めました。
Qiitaで Ruby とか Rails の知見を共有しています。
View は Slim で書いていて、もう PHP で、HTML で、というのには戻れない感じです。
そういう感じなのでブログも生の HTML を書くのが面倒になってきて Markdown で書きたいなぁという感じです。

OpenGL を学ぶ

やりませんでした。たぶん来年もやりませんね。

UnitTest / CI を学ぶ

Rails で Rspec を使ってテスト書いたり、 Guard でファイル変更を監視して自動的に Rspec を実行とかやった。
Rails はとにかくすぐ壊れる印象なのでテストがないとリファクタリングできないという感覚になっている。
テストを書く習慣が定着してるのはそういうことか〜という感じです。

個人でのプロダクトを出す

ライブラリをプロダクトと呼ぶかは微妙だけど、それ以外で言うと何もないなぁという感じです。
ひたすら GitHub Star を集めたり Qiita Stock を集めたりしてモチベーションを保っていた。

収入を増やす

一応増えたけどコスパ良くない。税金が重い。社会は厳しいという感じ。

2015年

もっと Android

あんまり Android で DB を使ったアプリを作ってないので作りたい。
RxJava, RxAndroid, Lombok あたりを使ってモダンな感じで作りたい。
Material Design に対応したい。
この3本で頑張っていこうと思います。

もっと Ruby on Rails

まだ1ヶ月やっただけなので、もっと経験を積みたいです。
アプリのバックエンドで使ってみる。

もっと UnitTest / CI

コミットしたらテスト実行されて…という環境を作る。

個人でのプロダクトを出す

新しいものを考えてはある。あとは作るだけ。

収入を増やす

コスパあげたい。

ブログを移行する

GitHub Pages に移行して Markdown で記事書きたい。
でも GitHub Pages をやめちゃった人がいて、面倒なのかとか気になっているところ。
ブログのカスタマイズにはあまり時間を掛けたくないので悩んでいる。

2015年もよろしくお願いします!

さらなる飛躍の年にするべく頑張ります!
2014/01/09

[書評]Smashing Android UI レスポンシブUIとデザインパターン

Smashing Android UI レスポンシブUIとデザインパターン
著者 : Juhani Lehtimaki
インプレスジャパン
発売日 : 2013-08-26
ブクログでレビューを見る»
Android アプリを開発する際に iOS の流儀を持ち込む人に読んでもらいたい本です。
Android を使ったことのない人に
Android とはこういうものだと知ってもらうのにちょうどいいと思います。
また、Android アプリ開発者も良いデザインパターンとアンチパターンを知り、
良い UX を提供できるようになれると思います。
書籍についてのページ: Android UI Patterns: Smashing Android UI
サンプルアプリ: Smashing Android UI Companion - Google Play の Android アプリ

本書は Android アプリ開発に関わるデザイナー、ディレクターにぜひ読んで欲しいと思います。
大きく分けて4部で構成されています。

第1部 Android デザイン

第1部は Android プラットフォームの全容とユーザー中心設計の開発手法を紹介しています。
開発者とデザイナーで最低限の共通認識を構築するために読んでおく必要があると思います。

第2部 Android プラットフォームの機能と UI コンポーネント

第2部は Android の流儀を解説しているので普段 Android を使わない関係者に読んで欲しい内容です。
Android の開発が初めてなプログラマがどんな UI パーツがあるのか等を知るのにもちょうどいいと思います。

第3部 スケーラブルな Android デザイン

第3部は Android の様々な機種のフラグメンテーションをカバーする強力な仕組みを解説しています。
この部分を理解しているかどうかで Android アプリ開発に関する印象は大きく変わるかと思います。

第4部 Android UI デザインパターン

第4部は Android における UI のデザインパターンとアンチパターンを紹介しています。
iOS と同じデザインで、同じ UI で、という要望があっても
Android には Android デザインパターンがあるのだ!と跳ねのけて
最適な Android のためのデザインをして欲しいと思います。
そのためには良いデザインパターンを知らなければならないので本書で学びましょう。

関連
SMASHING Android UIはAndroid開発に関わるなら必読書かも - なるようになるといいね
iOS な人が Android アプリを開発するときに気をつけたいこと | SmartNews開発者ブログ

Android アプリ開発に幸あれ!
2014/01/08

2013年の反省と2014年の目標

あけましておめでとうございます。
2012/01/08に始まったこのブログも
2周年を迎えました。
2012年の208記事とまでは行きませんが
2013年も117もの記事を書けたので
このブログのアクセスも増えていきました。
昔からの人も最近からの人も
2013年、お世話になりました!
2013年のエンジニア人生を振り返って
2014年の目標を立ててみようと思います。

2013年

Android アプリを何本か作った

まず、プライベートではDevCameraというカメラアプリを作りました。
これは会社でカメラアプリを作った際に無音連写が実装できずに悔しい思いをしたためと、
会社のカメラアプリがヒットしたのでその引合でカメラアプリ開発の依頼が来るだろうという予測のもと、
個人で技術調査的に開発したアプリです。
実際にカメラアプリの仕事を依頼を受けて開発しましたし、
カメラアプリ開発以外の仕事にも広がったので大変良い結果になったと思います。
本当は DevCamera 経由で仕事の依頼が来て、技術で仕事取ってきたどー!ってしたいので
もしカメラアプリの開発の仕事がありましたらこちらにメールいただけると嬉しいです。

カメラ機能は爆速で開発できるようになったのでこれ↓を作れば良かった。仕事してる場合じゃねぇ!
「きすしよ!」ヤフー!があの「天才1」が考案したアプリを爆速で本当に開発www | あんどろいどスマート

生産性の向上

2013年の目標であった「生産性の向上」はある程度達成することができたと思う。
Sublime Text 2 のカスタマイズはある程度使いやすくなったので完全に放置しているけど
Android のユーティリティ的なライブラリを充実させていったので開発速度は結構上がってるはず。

巳年なのでPythonを学ぶ?

Sublime Text 2 のプラグインを作るために学ぶかなと思ったけどやらなかったね。
必要は発明の母だから必要になっていない場合はモチベーション低くてやらないね。たぶん今年も。

新しい言語を学ぶ

新しいプログラミング言語を学ぶとかそんなことはなかった。
まぁ Android の Fragment とか Loader などの Android 3.0 以上の API を学んで使っていたのでアリ?
去年と比べたらグッと Android (Java) の技術力が上がったと思う。

UnitTestを学ぶ

Android の一部アプリで少しやったくらい。いかんせんカメラアプリとかだとやりにくい。

CI(継続的インテグレーション)を学ぶ

UnitTest と合わせて CI を回すと考えていたけど UnitTest をやっていないので CI も、という状況。

個人でのプロダクトを出す

Android アプリ「DevCamera」を出しましたね。
月一でアップデートするようにしています。じわっと 1000 DL 超えました。
まだまだやりたいことは多いのでアップデートしていきます。

収入を増やす

OpenGL を学んで DevCamera でフィルターの販売とかしたい。アプリ内課金の練習にもなるし一石二鳥。
応用情報技術者を取っていない。春に取ろう。
Amazon アフィリエイトは料率下がってるし、書評を書いてないしで減収。悲しい。
Google AdSense はブログのアクセスが増えて少し増えたけど飲み会にも行けないレベル。もっと増やしたい。
そして、今年もヘッドハンティング的なメールを頂いた。年末はそういう時期なのかな?
今年は去年と違ってヘッドハンティング会社ではなく、
開発会社から直接興味があったらお話でもというメールだった。
ブログの目的の一つがセルフブランディングなので技術者としての価値を認めてもらえたというのは
ブログがしっかり役割を果たしていて凄く嬉しい。
しかもカメラアプリを作っているようで、DevCamera が目に止まったのかなぁとか思ったりして
まったく DevCamera は大成功だな!

2014年

Androider としての技術力を更に高める

実装能力だけじゃなくて細部のクオリティの高さとか使った時の気持ちよさなんかを上げていきたい。

新しい言語を学ぶ

アプリのバックエンドとかを Ruby とかで作ってみたい気はするけど
Mobile Backend Starterとかあるしどうかな?
Ruby on Rails を動かすのに Heroku とかお金かかっちゃうからその辺をまかなえる副収入とか欲しい。

OpenGL を学ぶ

DevCamera にフィルター機能を追加してアプリ内課金で販売とかしたい。
画像加工系はカメラアプリ作ってるとそこそこ需要あるからできるようになっておきたい所。

UnitTest / CI を学ぶ

継続的なサービスとかじゃないと UnitTest や CI は意味が無いので
まずは継続的なサービスを作る所から?先は長い。

個人でのプロダクトを出す

今のところは DevCamera で一通りの実装をするかなぁ。更にもう一個作るかどうかは微妙。
DevCamera のクオリティアップだけでやることいっぱいなので今年は育てるフェーズになると思う。

収入を増やす

応用情報技術者を取る。アプリで収益を出す。ネット上で技術書代くらいは稼ぐ。
仕事も頑張って昇給/賞与の増額を狙う。頑張れば正当な評価も良い機会も与えられるので頑張ろう。
現状は特に不満もないし、やればやっただけ成長できるし、
生活基盤も構築されてきて遠くには移りづらいので転職は考えていないかな。
稼がねば。

2014年もよろしくお願いします!

さらなる飛躍の年にするべく頑張ります!
2013/02/23

コードを試しに実行できるideone.comが最強すぎる件

ideone.com
Ideone.com | Online IDE & Debugging Tool >> C/C++, Java, PHP, Python, Perl and 40+ compilers and interpreters

ideone.comとは

画像を見てもらえばわかるようにコードを投稿して実行することのできるサイトです。シンプル!
標準入力にも対応しているので競技プログラミングのテストにも良いです。

実行することのできるプログラミング言語は50種類以上!

バージョン・コンパイラなどの違いを含めると現在65種類もあります。
しかも増え続けていて、バージョンも結構新しいのに上がっているという凄さ!
個人的にPHPのバージョンが5.4になって DateTime が使えるようになったのが嬉しいです。
サポートしているプログラミング言語とそのバージョンは以下のページから確認できます。
http://ideone.com/faq#faq_supported_langs
一般的なプログラミング言語のサポートはもちろん、
アセンブラ、統計解析用のR言語、SQL、ネタ言語のBrainf**k、Whitespaceまでサポートしています!

アカウントを作成するメリット

アカウントを作成すると以下のページに書いてあるようなメリットが得られます。
http://ideone.com/account/register
抜粋すると非公開の投稿ができるようになったり、投稿履歴が見れるようになったりします。
しかし、一番は投稿後にソースコードを編集できるようになるのことですね。
よく使うのでその場で編集できるのは便利です。

オススメなので使ってみてね!
2013/01/08

2012年の反省と2013年の目標

あけましておめでとうございます。
2012/01/08に始まったこのブログも
1周年を迎えました。
おかげ様でこのブログのアクセスも
順調に増えて行きました。
12月にこの記事で話題になり
大きくアクセスも伸びました。
昔からの人も最近からの人も
2012年、お世話になりました!
2012年のエンジニア人生を振り返って
2013年の目標を立ててみようと思います。

2012年

Excel VBAを学んだ
マクロ組めれば普通だったら便利屋さんになれる。ちょっと触るくらいならいい。もうあんまりやりたくない。
Objective-Cを学んだ
iPhoneアプリを作ろうということでガッツリやったり。これで一応iPhone/Androidできるようになった。
PHPを学んだ
なんでもアリな感じでヒャッハーって感じですね。なんでもアリすぎて他人のコードを受け付けなくなりそうな感じ。
SQLを学んだ
SQLマジアツい。楽しい。いろんなクエリ組んでて一通りできるようになったと思う。たぶん。

生産性の向上
NetBeans触ってて使い勝手悪くて微妙な感じなので環境を見直して効率を上げたい。
UnitTestを学べなかった
UnitTestできて一人前よねーみたいな風潮があったからできるようになりたかったけど結局触れれず。

2013年

生産性の向上
Sublime Text 2をカスタマイズして開発スピードを上げたい。
巳年なのでPythonを学ぶ?
Sublime Text 2のプラグインはPythonで書くのでPythonを学んで(出来れば3系だけがいいなー)
プラグイン作って生産性の向上を果たすかもしれない。
新しい言語を学ぶ
上のPythonも含めて毎年なにか一つ新しいプログラミング言語を学びたい。
UnitTestを学ぶ
他にも学ぶべきことがいっぱいあってプライオリティ下がり気味で後回しになりがちだけど今年中には…!
CI(継続的インテグレーション)を学ぶ
Jenkins氏と友だちになりたい。ちょこちょこ調べて導入していきたい。
個人でのプロダクトを出す
iPhone/Androidアプリ、Webサービスなんでもいいから一つくらい個人のプロダクトを出したい。
収入を増やす
応用情報技術者を取るなり、生産性を上げてプラスアルファの働きをしてバリューを生み出すなりしよう。
そういえば思い出したけどヘッドハンティングのメール来てたし、転職という手もあるかもしれない。
個人プロダクトで稼ぐでもいいし、ネット上で何らかの方法で稼ぐでもいい。
個人の時代と言われるこの時代を一人でも生き抜くことができる、稼ぐことができるような力が欲しい。

2013年もよろしくお願いします!

さらなる飛躍の年にするべく頑張ります!
2012/12/28

Webプログラマーになる前に学ぶべきこと、知っておきたかったこと

新米Webプログラマー@wada811がプログラマーになる前に学ぶべきこと、知っておきたかったことを
これからWebプログラマーになる人に向けてまとめてみました。

心構え

プログラマとして生きるための心構えとして情熱プログラマーを読んでおくのはオススメだと思います。
研修先から帰る新幹線の中で読み終わる程度の分量だったのでぜひ読んでおいて欲しいです。
さらっと読めてしまうけど学ぶことが多いので何度も読んでしまうお気に入りの本です。
コードについてはリーダブルコードを読みましょう。[書評]リーダブルコード The Art of Readable Code
志高く、良いコードを書こうという気概があれば技術者として伸びていけると思っています。こちらもぜひ!
あと、ブログを書こう!私がプログラマとしてブログを書く事をオススメする8つの理由 | DevAchieve

スキル

HTML/CSS

Web系なら基本中の基本です。
HTML5/CSS3とかアツいですし、HTML5の仕様策定も完了したのですが
ユーザーが使用するブラウザが対応していないことも多いのでまずは基本のHTML/CSSを抑えましょう。
ということで、Web標準の教科書―XHTMLとCSSでつくる“正しい”Webサイトはオススメです。
結構習うより慣れろ的なところがあるので既存のページをいじくりまわすだけでも勉強になるかと思います。

プログラミング

あんまり好きじゃないですけど最初はやっぱりC言語からなのかなぁという気がします。
最初はCの絵本新版 明解C言語 入門編なんかを半年くらい挫折を繰り返したり
プログラミングの宝箱 アルゴリズムとデータ構造 第2版でちゃんとアルゴリズムを学んだり
AIZU ONLINE JUDGEのVolume100のものを一通りやったりとある程度できるようになるまで頑張りました。
今は3分動画でマスターする初心者向けプログラミング学習サイト - ドットインストールがあって
通信添削もしてくれるそうですからプログラミング学習については困らなそうですね。

JavaScript/jQuery

軽く知っていると実装に幅が出て捗ります。
ガッツリ習得してなくても何とかなっているけど基本くらいは知っておきたいですね。
プロになるためのJavaScript入門が最近出て、書評とか見る限り良さげだったので読むと良さそうです。
ガチでやるならJavaScript 第6版JavaScriptリファレンス 第6版は役立ちそうです。

正規表現

もしかしたらJavaScriptより先にこっちを習得しておくべきかもしれません。
めんどくさいテキスト処理などを一発で片付けることができたりとかなり捗ります。
習うより慣れろで覚えてしまったのでどの書籍が参考になるとかは挙げられないのですが頑張って覚えましょう!

PHP

全く知らないのでは実務で困ることが多いと思うので概要をプロになるためのWeb技術入門
プロになるための PHPプログラミング入門で抑えておけばなんとかなるはずです。
プログラミング自体が初めてでなければめっちゃ便利なC言語の上位版みたいな感じなので大丈夫だと思います。
あとはPHP: PHP マニュアル - Manualが詳しいので関数とかをマニュアル見れば使いこなせるかと思います。
フレームワークはCakePHPがよく使われているますが、入社時に習得してなくても
CakePHP Cookbookというドキュメントがあるので入社後に習得していけば大丈夫です。

SQL

PHPに合わせてSQLも学ぶ必要がありますが、入社時にはデータベースの概要がわかっていれば十分でしょう。
マンガでわかるデータベースがわかりやすかったです。[書評]マンガでわかるデータベース | DevAchieve
SQL ゼロからはじめるデータベース操作も読んでガリガリSQL書けるようになっていると凄いです。
[書評]SQL ゼロからはじめるデータベース操作 | DevAchieve

バージョン管理システム

SubversionかGitのどちらかを知っていて軽くでも使ってみていると実務で使う際に理解が早いかと思います。
個人で使うならGitだと思うので入門gitとか読んで実際に使ってみると良いんじゃないでしょうか?
GitならGitHubでソースコードを公開できるので何か作って公開しておくとヘッドハンティングとか来るかも?

資格

資格を持っていなくても基本情報レベルの知識はあった方が良いんじゃないかと思います。
僕は基本情報は入社直後の春に取りました。基本情報技術者試験を受験するまでに使った参考書3冊
基本情報が取れればちょっと勉強すれば応用情報も取れると最近聞いて来春受験に向けて勉強してます。
資格を取ったら祝い金とか貰えるとこなら頑張るのもいいと思います。

おわりに

こう見るとWebプログラマーに求められる技術は結構幅広いですね。
広く深い知識を習得していかなければなりませんので日々勉強が必要です。
万能選手でなければならないけどもスペシャリストでもなくてはならない、
それでいて一番の下手くそでもいたい。(情熱プログラマー)
こんな師匠がいて導いてくれていたらと思い、記事を書いてみました。
僕のWeb系の師匠になってくれる人を探しています!
2012/10/02

[書評]プログラミングコンテストチャレンジブック [第2版]

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
秋葉拓哉
マイナビ
発売日:2012-01-28
ブクログでレビューを見る»
実際のプログラミングコンテストで出題された問題などを元に
アルゴリズムの解説をしている本。
深さ優先探索と幅優先探索でわーわー言ってるレベルなので
難しいし白黒だしで睡眠導入剤でした。
本自体は色々な手法や色々な問題を解説していて凄いのだけど
理解するには一つ一つの手法に対してもっと練習問題がないときついと思いました。
AtCoderの問題を@chokudai さんが解答手法を呟いてくれるので
この本でその手法を調べてAtCoderの問題に適用していけば練習になりそうです。
何もなしで、ただ読むだけだと睡眠導入剤にしかならない。途中で読むのを諦めた。

深さ優先探索とか幅優先探索でわーわー言ってるレベルでも徐々にステップアップしていける本があるといいな。
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
2012/09/10

[書評]日経ソフトウエア 2012年 06月号

日経ソフトウエア 2012年 06月号 [雑誌]
日経BP社
発売日:2012-04-24
ブクログでレビューを見る»
矢野りんのデザイン業務レポート、
プログラミングでコレがやりたい!40選、
初めて作るスマホアプリ、Androidのここに注意!、
深津貴之の使いやすいiPhoneアプリの作り方。
付録は「HTML5逆引きポケット事典」という小冊子。
日経ソフトウエア ダウンロード - 2012年:ITpro

矢野りんのデザイン業務レポート

上から順にやってもらう場合、リスト型のUIだとユーザーが何をすればいいのか戸惑うかもしれない。
リスト型の UI は階層構造をイメージさせるのでどこかに「飛んで」いく場合には向いてないかも。
「飛んで」いくならボタンなどがいい。ちゃんとした説明文とわかりやすい文言のボタンが良い。

プログラミングでコレがやりたい!40選

「ナンプレを解くプログラムを作りたい」というトピックは深さ優先探索を使っていて参考になった。
「迷路の最短経路を発見したい」というトピックは幅優先探索が使われていてAtCoderで解くときに役立ちそう。
すごく雑多で微妙。

初めて作るスマホアプリ iPhoneアプリを1時間で作る

難しいことを一切解説せずに3分クッキングやりましたな感じ。InterfaceBuilder の使い方だけ学べる。

Androidのここに注意! セキュリティ対策のツボ

対象読者のレベルが上ったり下がったりしたのは気のせいだろう。
そういえばAndroid Security 安全なアプリケーションを作成するためにをまだ読めてない。
今回のAndroid特集はセキュリティ特集とかマニアックな感じのネタが多かったような。

深津貴之の使いやすいiPhoneアプリの作り方

iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザインの訳者であり、
iPhoneアプリ開発者として有名な@fladdictさんの記事。
アプリ開発者はPCの電源を切ってペーパープロトタイピングしよう!という話。
ピグマサインペン 0.5mmで輪郭を描き、コピックというマーカーで面を塗るらしいです。
紙は75×50mmのポストイットがiPhoneの画面と全く同じサイズ(!)でいいんだそう。
アイディアをメモして、画面も作れるし、貼れるので一覧もできるし画面遷移もわかりやすくていいらしい!
1ページの記事だったけどどの記事よりも価値のある記事だと思った。

おまけ

「インターン女子C#を学ぶ」が終わってしまい、「マンガでスキルアップC#プリミティブ」が始まりました。
妖精さんにいろんな物をさらっと教える感じで「インターン女子」と比べると浅く感じたのは気のせいか。
付録の小冊子は「HTML5逆引きポケット事典」で、表紙に何故か栃木のアイドルユニットがいるという謎。
HTML5のタグの解説というより、広義のHTML5で Canvas API, Web Storage API, Geolocation API,
Drag and Drop API, File API, Text Selection API, Web Messaging API,
Web Worker API, Offline Web Applicaitons の解説とサンプルコードがあって結構いい感じ。当たりの付録です。

日経ソフトウエア 2012年 06月号 [雑誌]
日経ソフトウエア 2012年 06月号 [雑誌]
2012/08/26

[書評]リーダブルコード The Art of Readable Code

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
Dustin Boswell
オライリージャパン
発売日:2012-06-23
ブクログでレビューを見る»
コードは理解しやすくなければならないという考えのもと、
理解するための時間を最短にするための実践的なテクニック集を解説している本。
アーキテクチャとかデザインパターンとかではなく、
もっと基本的なことについて書かれているので
この本の内容を当たり前だと思えるようなプログラマーになろう!

目次と訳者の解説が公開されているので気になったら読んでほしい。
O'Reilly Japan - リーダブルコード http://www.oreilly.co.jp/books/9784873115658/
リーダブルコードの解説 http://www.clear-code.com/blog/2012/6/11.html
個々の内容について書いたらリーダブルコードの内容をリライトしてしまうのでそれ以外について書く。
この本の原典は以下の書籍だろうか。
あわせて読みたいで高品質なコードを書くための書籍として紹介されていた書籍だ。
Code Complete第2版〈上〉―完全なプログラミングを目指して
Code Complete第2版〈下〉―完全なプログラミングを目指して
リファクタリング―プログラムの体質改善テクニック
プログラミング作法
達人プログラマー―システム開発の職人から名匠への道
Clean Code アジャイルソフトウェア達人の技
これらをいくつか読んでいる人にはおそらく必要のない本だろう。
どれも名著と呼ばれ、内容的にも値段的にも重量級の書籍ばかりだ。
プログラミングに関して意欲と費やせるお金と時間があるのならば原典を読んだほうがいいと思う。
それらを持ち合わせていない人や手っ取り早くテクニックを知りたい人には最適の本だ。
あとは他人のケツを拭きたくない人は教育用に読ませればいい。230ページ程度だからすぐに読める。
読み終わったら(本の内容に理解してくれたら)すぐにコードはマシなものになるだろう。

リファクタリングやTDDが一人前のプログラマーならできて当たり前みたいな雰囲気が最近あるけど
リーダブルコードを書くことも当たり前な雰囲気ができて欲しいですね。当たり前すぎて言われてないだけかな?

追記: 良い名前をつけるためのWebサイト

リーダブルコードでは良い名前をつけろと言われるが日本人に英語の細かいニュアンスの違いを把握して
命名するのはなかなか大変だと思うので類義語・対義語を調べるには以下のサイトがいいと思う。
Thesaurus.com | Find Synonyms and Antonyms of Words at Thesaurus.com
フォームから検索すれば定義や類義語・対義語がわかる。Synonymsが類義語で、Antonymsが対義語だ。
適切な意味の単語を選ぶことに時間をかけるプログラマーはブックマーク必須だ!

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
2012/07/23

[書評]達人プログラマー システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道
アンドリュー・ハント
ピアソンエデュケーション
発売日:2000-11
ブクログでレビューを見る»
様々なところで語られるプログラマがやるべきことの原典。
まだ「こうあるべきだよな!」と共感するほど
システム開発に携わっていないが「こうあるべきなんだ」と思って
本書に書かれていることを実践していきたい。
プログラマかくあるべし!みたいな本。
なんとなく情熱プログラマーとかの心得本みたいな印象があったけど違った。
より実際のプログラミング、システム開発に近いところでのプログラマがどうあるべきかを説かれている。

巻末に達人プログラマーになるためのヒントがまとまっているので
定期的に達成度をチェックすると面白いと思う。
いろいろできるようになりたいことはあるけどとりあえずユニットテストをするようにしたい。
ひよっこプログラマなので半人前なのだけれども、テストができないと半人前感が半端無い。

また折を見て達成度をチェックしようと思う。
2012/07/08

日経ソフトウエアをまとめ買いしてやったぜぇ~ワイルドだろぅ?

毎月のように読みたいトピックがあって、そんなのが半年くらい続いたので
もう買ってしまえ!ということで今年の分を一気にまとめ買いしてやりました。
情報収集にも時間的限界が来たので雑誌で効率良く学びたいです。

最初はAmazonで買おうかと思ったけど定価より高かったり、
安いものは付録がついてなかったりしたので
日経BP書店で買いました!
ちゃんと付録がついてて定価で買えるのでオススメです。
日経BP書店|日経ソフトウエア

8月号はまだAmazonで定価で買えるので良いですよ!
(※僕に紹介料が手に入る的な意味で)
日経ソフトウエア 2012年 08月号 [雑誌]
日経ソフトウエア 2012年 08月号 [雑誌]
2012/07/07

このプログラミング問題が解けたら書類選考無し&高級うなぎGET!

タイトルは軽く釣りです。
本当は僕じゃなくてコッチ→このプログラミング問題が解けたら書類選考無し&高級うなぎGET! | Technology-Gym

エイトクイーンじゃなくてセブンクイーンだったので前に書いたコード少し書き換えた。
それっぽい答えも出て、メールを送ってもダエモンさんから返信がないので正解だったと思う。
採用に関わるものらしいので回答は載せられないけど
このブログの熱心な読者ならアレを書き換えたとわかるかもしれない。

採用にこういうのでやるのって良いね!FizzBuzzはもう使い古された感があるから
こういうアルゴリズムの典型問題でフィルタリングするのよさそう。
次回も期待しています。
2012/05/01

本当は(きっと)怖くないクロージャ

最近 iPhone アプリに挑戦していて、Objective-C とかいう一風変わった言語を勉強しています。
Appleワールドでしか生きられない言語のためによくわからない言語仕様をネットでちまちま調べてるほど暇じゃねーよと
最近は詳解 Objective-C 2.0 第3版を買ってセコセコと読んでいます。とても重いです。内容的にも重量的にも。

やっとブロックオブジェクトの章まで読み進めたら
Block は、「他のプログラミング言語ではクロージャ(closure)として知られている言語機能に相当」とか書かれていて、
( ´・∀・`)ヘーなんだークロージャのことかー全くこの言語は同じ事柄に対して別の名前がついてて大変だぜェー

で、クロージャ(closure)って何?

よく考えたらクロージャがなんなのか知りません。正直プログラミングClojureとゴッチャになってました。
わからないことはとりあえずググります。
クロージャ - Wikipedia
クロージャ(クロージャー、closure、閉包)はプログラミング言語における関数の一種。
引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。
本当にありがとうございました(?)

望みは絶たれたかと思ったがWikipediaの外部リンクにJavaScript 猿でもわかるクロージャ超入門という文字が!
僅かな望みをかけてリンクをクリック!Wikipediaのとどめの一撃に対して思うことに共感!
段階を踏んで一歩ずつ理解していけるのでオススメです。

とりあえずなんとなく、こういうこと↓だと理解しました。だいたいあってるらしいです。


えぇ、思い返せば関数の呼び出し回数を管理する変数を泣く泣くグローバル変数にして
気持ち悪いなーどうにかならないのかなーと思っていましたが、それを解決できるのがクロージャらしいです。
何か恐ろしいもののように仰々しく説明されるからよくわからなくて怖かったクロージャですが、
ホントは怖くなくて、身近な問題を解決できる便利なヤツでした。

浅い理解で間違ったことを書いているかもしれないので、タイトルはカッコ書きで…きっと(;´∀`)
なにか間違っていたら指摘してくださいね!

追記:どうやら上のツイートの用途だけじゃないみたいです。
2012/04/21

[書評]プログラミングの宝箱 アルゴリズムとデータ構造 第2版

プログラミングの宝箱 アルゴリズムとデータ構造 第2版
紀平 拓男
ソフトバンククリエイティブ
発売日:2011-03-30
ブクログでレビューを見る»
独学でプログラミングを学んだので無駄の多いコードを書いていて、
それに気づきもしなかったが、この本のおかげで無駄に気づくことができた。
基本的な内容から、後半は高度な内容まで網羅されているので誰しも得るところはあると思う。
帯に全プログラマー必読と書かれているのも宣伝文句ではないと思った。

先日、基本情報処理技術者試験を受験したが午後が時間ギリギリでアルゴリズム弱いなと実感したので衝動買いしました。
レビューにある通り、プログラミングは独学だったのでアルゴリズムとデータ構造については聞きかじったことがあったくらい。
ちゃんと学ばなくてはと思っていたので基本的な内容から解説してある本書は役に立った。
読んだだけではモノにはできないと思うのでAOJとかAtCoderで実践してモノにしたい。

ということで無駄の多かった自作スタックを効率化したのを作りなおしてみた。
AOJ/vol100/AOJ10032_efficient.cpp at master · wada811/AOJ · GitHub
AOJ/vol100/AOJ10033_efficient.cpp at master · wada811/AOJ · GitHub

AOJ/vol100を終えてパラメータはこんな感じ。データ構造のポイント低いですね…。この本を読んで上げていきたい。
2012/01/27

Windows7 64bitでGit/GitHubを始める

先に言ってしまうとWindows7 64bitだからといってほとんど違いはありません。
まずはWindowsでGitを使うためにMSysGitというものをインストールする必要があります。
以下のサイトでGit-*.*.*-preview********.exeをダウンロードしします。
Downloads - msysgit - Git for Windows - Google Project Hosting http://code.google.com/p/msysgit/downloads/list

このようなアイコンのやつを実行すると
セットアップウィザードが開きます。
ライセンスに同意します。
保存場所を指定します。
空白とか日本語が含まれるフォルダに
保存するのは何か問題が起きそうで
怖いのでCドライブ直下にでも。
64bitだとContext menu entriesの方が
選択されている。違いはこれだけかと。
今インストールしているやつに
Git GUIというのも入っているから
使うならGit GUI Here のチェックが
必要になるようだ。

それとは別にTortoiseGitという
GitのGUIツールがあり、
それを使うなら同じく要チェック。
TortoiseGitとGitHubの連携を
試みたけど上手くいかなかった。

頑張ってGitコマンド覚えよう!
スタートメニューに追加
普通は"Use Git Bash only"にしておいた方が良いとか。(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
チェックアウト時の改行コードの設定。
「何もしない」の一番下が良いとか。
(参考:Windows版git & TortoiseGit のインストール - Linux & Development Diaries)
セットアップウィザードの終了。

次はいよいよGitHub


Plans & Pricing - GitHub
無料アカウントでも登録してみる。
適当に登録したら
Set Up Gitに飛ばされるけど
Git のインストールは済んでいるので
Help.GitHub - Set Up SSH Keysに飛ぶ。
SSHのキー作成が初めてだったり、
何のことだかわからなかったら、
3. Generate a new SSH key.から先を
Git Bashという黒い画面のやつで実行。

GitHubにリポジトリを作る

Your Dashboard - GitHubにアクセスしたら中段に大きく、Create A Repo とかあるので、
そこに沿ってリポジトリを作成する。英語は割と無視してコマンドとスクリーンショットを真似すれば良い。
作成したら README ファイルが作成されたはずなのでGitHubから自分のリポジトリのページを開く。
READMEをクリックしてEdit this fileとかのボタンを押して編集して保存なんてことをしてみる。
ここでいくら変更してもローカル(自分のPC)のREADMEファイルには変更が反映されない。
エディタなどでも開いても中身のないファイルのままのはず。

GitHubでの変更を反映するには

pull(プル)という動作をする必要がある。
Git Bash(黒い画面のアレ)で"git pull"してやるとGitHubでの変更がローカルのリポジトリに反映される。

GitHubに変更を反映するには

ローカルリポジトリに追加
git add ファイル名

コミット
git commit -m 'コメント'

GitHubに反映
git push -u origin master

練習だと思ってREADMEにこれらのコマンドを書いてGitHubに反映してみよう!
使い始めはコマンドを忘れやすいのでリポジトリのREADMEに書いておくと便利。入門git

とりあえず超初心者なユーザーはこれで十分かも。
もっと使いこなしたかったり詳しく知りたかったら右の書籍がオススメかも。

使い始めで理解が浅いから大した解説出来なかったけど、この記事が役に立つと良いな。
ということで、Git/GitHub始めました。wada811's Profile - GitHub
AIZU ONLINE JUDGEの回答載せてます。wada811/AOJ - GitHub
良かったらフォローしてください。
2012/01/25

AIZU ONLINE JUDGE(AOJ)で競技プログラミング始めます

AIZU ONLINE JUDGEとは

AOJ - オンライン プログラミング チャレンジ
オンラインジャッジとは
オンラインジャッジとは、ユーザから提出されたプログラムの正しさ・効率を
自動で判定するオンラインシステム(WEB アプリケーション)です。
24時間インターネットからサイトにアクセスし自由に自主学習する・遊ぶことができます。
サイトには、多くの問題が掲載されています。各問題に対するプログラムのソースを提出すると、
「問題の仕様から考えられる入力に対して正しい出力を行っているか」、
「指定された資源(CPU 時間、メモリ使用量)で処理を行っているか」を
厳格な審判データと検証器で自動判定を行います。サイトには多くのユーザが登録しています。
他の人と問題数や処理速度で競うこともできます。
AOJ チュートリアル (PDF注意) http://judge.u-aizu.ac.jp/onlinejudge/aoj_tutorial.pdf

日本語でできる競技プログラミングです。
競技プログラミングとは…明確な定義は知らないですが以下のように考えています。
与えられた問題に対してプログラムを書き、その正しさ・効率を競うこと。
何かを作りたいものがなくてもプログラミングしたいという人には
適切な問題を提示してくれるAOJはオススメだと思います。
日本語でわかりやすいし、ヒントもあり、初心者でもできる!
(初心者向けのVolume 100の最初の問題は"Hello World"を表示するというモノ!)

ひよっこプログラマーなのでVolume100から始めたいと思います(^o^)/
まずは少し使ったことのあるC言語でVolume100を終わらせ、
その後、ちゃんとやったことのないJavaでVolume100をやりたいと思います。
平日夜9時に一回ずつ解答を晒していく連載を始めます。
2012/01/15

[書評]プログラムはなぜ動くのか 第2版
知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
矢沢久雄
日経ソフトウエア
発売日:2007-04
ブクログでレビューを見る»
プログラムとハードウエアの関係性を説明した本です。
基本情報技術者試験を受けるなら基礎知識として知っておきたい内容です。
計算機科学的な内容と基本情報技術者試験に関係あるような内容の本です。
情報処理推進機構:情報処理技術者試験

情報処理技術者試験とは

情報処理技術者試験は、「情報処理の促進に関する法律」に基づき経済産業省が、情報処理技術者としての「知識・技能」の水準がある程度以上であることを認定している国家試験です。
情報システムを構築・運用する「技術者」から情報システムを利用する「エンドユーザ(利用者)」まで、ITに関係するすべての人に活用いただける試験として実施しています。特定の製品やソフトウェアに関する試験ではなく、情報技術の背景として知るべき原理や基礎となる技能について、幅広い知識を総合的に評価しています。
基本情報技術者試験 [ Fundamental Information Technology Engineer Examination ]
対象者像:高度IT人材となるために必要な基本的知識・技能をもち、
              実践的な活用能力を身に付けた者
ということでプログラマなら取っておかなければならない資格のような気がします。
対策本を読んで過去問を解けばできないことはなさそうですが、
しっかりとした理解なしに資格を取得しても価値がないと思うので
こういう本を読みながら基礎知識を蓄えているところです。

以下は役に立ちそうなリンクなど。
情報処理推進機構:情報処理技術者試験
 午前午後
試験時間9:30~12:00(150分)13:00~15:30(150分)
出題形式多肢選択式(四肢択一)多肢選択式
出題数
解答数
出題数:80問
解答数:80問
出題数:13問
解答数:7問
情報処理推進機構:情報処理技術者試験:試験要綱・シラバス・過去問題 など
[Web問題集] 基本情報技術者/応用情報技術者/ITパスポート - 気軽に資格学習 [無料]

[書評]良いコードを書く技術 読みやすく保守しやすいプログラミング作法

良いコードを書く技術 -読みやすく保守しやすいプログラミング作法
縣 俊貴
技術評論社
発売日:2011-04-09
ブクログでレビューを見る»
良いコードを書くためのHow-to本です。
とっつきやすく読みやすいため2時間ほどあれば読み切れます。
本書P.15-16に書かれていることがこの本に対する全てです。
本書で基礎を理解したら原典と呼ばれる良書を読みましょう。
幸い、本書の付録には解説付きの参考文献が載っているので
次に読むべき本について戸惑うことはないでしょう。
色々なレビューにあるように「内容が薄い」と感じられるのは、
もう既にある程度良いコードを書けているから
期待に沿うような目新しい技術に出会わなかったからなのでしょう。

悪い本ではないのですが過度の期待を持たせすぎて
Amazonでは低い評価になっていますね。

「普通のプログラマになりたいひよっこプログラマのためのステップアップガイド」と
帯の文章を変えればちょうどいいかもしれません。
大学の情報科1年とかIT系専門学校の生徒が読めば得るものは多いでしょう。きっと。

参考文献がわかりやすく解説付きで載っているのでそちらを読むべきです。
どの本も原典と呼ばれるような良書なので深い理解が得られるでしょう。
一部抜粋して以下にリンクを貼っておきます。

それでは。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
Code Craft ~エクセレントなコードを書くための実践的技法~
Code Craft ~エクセレントなコードを書くための実践的技法~
Code Complete第2版〈上〉―完全なプログラミングを目指して
Code Complete第2版〈上〉―完全なプログラミングを目指して

タグ(RSS)