読者です 読者をやめる 読者になる 読者になる

tanaka51のブログ

http://blog.tanaka51.jp に移転しました

前職と新しい職場の違い

雑記

今日は新しい職場へ初出社。
前職との違いが初日から色々と明らかになって驚いたので書いておく。

社内ルール

前職:私語はなるべく禁止。あまりにも独り言が多いと評価が下がる。
チーム内の話し合いもパーテーションで区切った別の場所でやる。
ずっとお菓子食べてたらお菓子食べるの禁止になった。

現職:しゃべれ。コミュニケーション大切。その場で話しあう。
逆にだまってると評価下がる?
お菓子は自由に食べて良い。

社内の雰囲気

前職:黙々と作業する。男が多い。
現職:ガヤガヤしてる。男女半々位。

社員の技術力向上への会社の考え方

前職:ワーキンググループという形で若い人達中心のプロジェクト有り。
現職:積極的に勉強会開いてください。勉強会やらセミナーへの参加補助有り。

社長

前職:アセンブラバリバリ書いてた人。おじいちゃん。OSつくれる。
現職:プログラミングが大好きな女性。Ruby!

主な開発

前職:C言語で主にWindows向けのシステム開発。社内開発。
現職:Ruby on Rails でのwebアプリケーション開発。出向、社内開発両方有り。

開発環境

前職:Windows。自作PC。最初の1年間は残り物の寄せ集めの低スペ。1年経つと最新パーツのPCになる。
現職:Mac。最初から最新のが貸与される。



とまぁ、真逆な環境になった。
どちらが良いかは人それぞれだけれども、自分にとっては今回の転職は成功したと思ってる。
前職の最初の1週間は緊張で胃が痛くて死にそうだったけど、今回は割りとリラックスして入社できた。

今は新しい職場になって嬉しい事ばかり思い浮かぶけど、きっと嫌な事も出てくる。
そんな時にしっかり乗り越えられるようになりたいもんです。

Windows + VMWare で Ubuntu11 を使う

Linux

Ruby on Rails3 + Ruby 1.9.2 の組み合わせが、うまくいかなくてどうしようもないから、Linuxを再インストールすることにした。
そのときの事をメモ。
メモといっても、正直簡単すぎてメモとる必要も無いかもしれない。

環境

VMWareのインストールとUbuntuのイメージは落とし終わってるとして・・・


VMWareを起動して、新規仮想マシンの作成を選んで、Ubuntuのイメージ選んで、後は簡単インストールが全て面倒見てくれるので何もやることはなし!!!
途中のパーソナライズの所は、ログインに使うから気をつける位かな・・・

Core2 1.7GHz の環境で、インストールに50分くらい。

Ubuntuが起動したら、パーソナライズで入力した名前とパスワードでログイン。
startx でGUI版起動。
Unityが無いよーとか言われるけど無視。

日本語の設定。
システム -> システム管理 -> 言語サポートからやる。

IMはibusにしとく。
日本語環境入れるのに少々時間かかる。
終わったら、"日本語"をドラッグ&ドロップで一番上まで持っていってから、Apply する。
(これ、最初はどうするのか分からなかった・・・)

後はログインし直せば、日本語環境になってるし、キーボードも勝手に日本語対応になってるし、すっごく便利!!!!

WindowsでEmacsを使う・改

Emacs

前にWindowsでEmacsを使う為の記事を書いたのですが、またWindowsにEmacsを入れる機会があり、その時に分かった事が少々あったので改めて書いてみます。
(前回の記事はこちら こちら)
尚、今回動作確認をした環境はWindows XP Pro 32bitです。
あと、Cygwinは入れない方向で考えています。

Emacsで何ができたら嬉しいかを知る

もともとUnix向けのエディタなので(本当だろうか?)、Windowsで使う為には多少の工夫が必要な場面があったりします。
今回、Emacsで最低限何ができて欲しいのか考えたところ、

  • grep
  • auto-install
  • WindowsのIMEが使える事
  • diredで文字化けせずに使える事

ってな事があがりました。
これらをWindows環境でも使えるようにするためにどうにかします。

Windowsに足りない機能を追加する

まず先に、grepとauto-installの為に必要な機能をWindowsに追加します。

Emacsでのgrepとauto-installは、それぞれ"grep"と"wget"を呼んでいます。
これらは残念な事にWindowsには標準で入って無いんですね。
なのでWindowsに入れておきます。

"Windows grep"なんかでググッて、実行ファイルをパスの遠ったフォルダにぶっこんどくだけでOKです。
一応、今回私が使わせて頂いたプログラムのURLも貼っときます。

grep http://gnuwin32.sourceforge.net/packages/grep.htm
wget http://gnuwin32.sourceforge.net/packages/wget.htm

Windows 7で、gow(gnu on windows)をインストールして使った事があったのですが、wgetがうまく動きませんでした。
7の問題か、gowの問題か分かりませんけど、注意した方が良いかもしれません。

IMEを使えるようにする

これは前回のエントリのコメントにて教えていただきました。
http://gnupack.sourceforge.jp/docs/latest/UsersGuide.html
こちらかの emacs for gnupack から最新版をダウンロードしておきましょう。
後はこれを解凍・インストールするだけでWindowsのIMEが使えるEmacsが使えるはずです。
感謝ですね。

文字エンコーディングの問題を解決する

これも前回も書きましたが、その後分かった事もあるので追記です。

Windowsは内部エンコーディングがShift-JISです。
なので、Emacsの標準文字エンコーディングをUTF-8なんかにしてdiredを使うと、日本語のディレクトリが扱えなくなります。
さらに、diredで扱うエンコーディングとバッファに入力するエンコーディングが違ったりすると最悪ですね。

そこで、WindowsでEmacsを扱う場合、エンコーディングは全てShift-JISにした方が良いという結論になりました。
なので文字コードの設定は以下のようになります。

(set-language-environment 'Japanese)
(prefer-coding-system 'shift_jis)

set-language-environmentにJapaneseを設定すると良くないと聞いた事があったのですが、最新版のEmacsなら問題無いとも聞いたので、設定しておきます。
また、prefer-coding-systemは、全ての文字コードを一括して指定できるらしいので、最新版ならこれ一つ設定するだけでOKのようです。

エンコーディングで面倒なのは、日本語のgrep検索時に、文字コードの差異を気にしなきゃいけなくなる所ですよね。
ただし、これは lgrep というgrepの亜種を使えば解決するようです。
これはまたその内やってみようかと。
検索といえば、migemo検索もやってみたいのですが、ちょっと手を出してみた感じうまくいかず・・・これもその内再挑戦してみる。

後は、忘れずに日本語フォントを設定しておきましょう。
これは前回のエントリを参考にしていただければ。



こんな所です。
Windowsの内部文字エンコーディングがUTF-8になってくれる日を心から待っています。

プログラミング生放送勉強会 第10回@品川 に参加したのでまとめ

勉強会

初プロ生でした。
マイクロソフト本社@品川で行われたのですが、これがまたすっげぇビルだった・・・
何も無くてもまた行きたい・・・

メモを何もとってないので、思い出せる限りでまとめておきます。
(抜けてる|間違ってる)所が多々あると思うので、完全に自分向けのメモです。

Linux でサーバー構築

スピーカー: 仲根かなはるちゃんさん

  • Linuxについての説明
  • CentOSについて
  • CentOSをインストール
  • 独自ドメインの取得

「漢ならXはいらない」的なセリフにしびれました。
余った時間で、ftpでのファイル転送のデモ。
VMWareを2つ動かして、クライアント -> CentOS <- WindowsXP という流れで行われました。

前々から自宅サーバをたてようと思っていた気持ちに拍車がかかりました。
あと、独自ドメインが年間1000円程で取得できるそうなので、これもその内とろうかな、と。

スペルミス修正プログラムの作り方

スピーカー: とろとき さん(@torotoki)

  • Pythonを用いて、N-gramモデルという概念を用いたスペルミス修正プログラムを作成

実際に、sshで自分のPCに接続して実演もされていました。

自然言語処理、という分野だそうです。
なかなか興味深いです。

一番の驚きは、中学生ということです。
最近の中学生は論文を読んだりコーダーズアットワークを読んだりオライリー本を読んだりするそうです怖いですw
EmacsLinux(?)という、根っからのギークみたいです。
そして初めてのプレゼンだというのに、完成度が高かったです。

Windows Phone でニコニコしてみた

スピーカー: 野村大翼 さん(@daisuke_nomura)

  • Windows Phoneについての説明
  • Windows Phoneプログラミング

とても詳細に、他のスマートフォンとの違いやWindows Phoneならではの特徴を説明されていました。
Windows Phone開発の実演もされていました。
Microsoftへの愛にあふれていました。

うーん、欲しくなってしまう・・・
開発環境は、Androidよりもかなり良さ気な印象。
エミュレータが高速に動く、端末毎の違いが少ない、というのが良いですね。
いやぁ、本当に買ってしまいそうだ・・・

Unix と Windows 世界の融合

スピーカー: みむら さん(@mimura1133)

デモとして、実際にコマンドプロンプトUnixコマンドを実行したり、bashを起動してWindowsディレクトリにアクセスしたり、notepadを起動したり、されていました。

実はこのセッションを一番期待していたのですが、SUAの対応がVista/7のEnterprise以上というのに絶望したw
これはWindows Phoneの事も考えて新しくPCを買えという事なのか…w
みむらさんはとても面白い方でした。

えぴ流 C++ 実装スタイル

スピーカー: επιστημη さん

  • C++での「ポインタを使わない」実装
  • C++11で新しく導入された構文・ライブラリの紹介

デモとして実際にC++11の機能を使ったコードをビルドして実行されていました。

事前に「ストラウストラップのプログラミング入門」を読破していたので、セッション中に出てきたC++のコードを全て理解する事ができました。
いやー、マジでこの本やばいよー!C++やる人みんな買いだよー!
・・・まぁ知ってる人から見たら簡単なコードばかりだったと思うのですが、進研ゼミ的な感じで「見たことある!」の連続だったので、一人興奮していました。

C++11は、かなり便利そうですね。
ラムダ式はやっぱり良さ気です。
クロージャ的な事もできるっぽいです。
あ、ついさっき正式に策定されたってツィートを見ました、おめでとうございます。





ライトニングトークについては、本当に端々しか思い出せないので省略・・・
今度からはちゃんとメモ忘れないようにしなければ・・・

最初っから最後まで、とても楽しめましたし、色々勉強になりました。
関係者の方々、ありがとうございました。

次回は是非、懇親会にも参加したいです。

「ストラウストラップのプログラミング入門」読み終わった

書評


ストラウストラップのプログラミング入門

ストラウストラップのプログラミング入門

読み終わりました。
読み終わってすぐの興奮した状態で書いてるので文章めちゃくちゃだったらすみません。

高いです。
分厚いです。
長いです。

読み終わった今では、見た目、値段以上の価値があると私は確信しています。

これは、「プログラミング」の入門書です。
プログラミング言語」の入門書では無いです。

本当の初心者がプログラミングを独学で学ぶ為の本では無いです。
一人で読むなら、最低でもプログラミング環境を自分で整えられる位の力が必要です。
または、ベテランプログラマにいつでも助けてもらえる初心者が対象です。
本書の目的通りに、大学やら新人研修のテキストとして扱うのが一番だと思います。


扱っている範囲が、ものすごく広大です。
Hello, worldから、I/O、関数、型、抽象クラス・継承・ポリモーフィズム等のオブジェクト指向プログラミング、ジェネリックプログラミング、STL、例外処理、GUIプログラミング、テスト手法、デバッグ方法、各種アルゴリズム、設計方法、プログラミング言語の歴史、C言語との連携、等々。(順不同)
1冊の本でこれだけの事が学べます。
広く浅い面もあるかもしれません。が、本当の必要最低限が学べます。
1ページも目をそらす事ができません。
無駄なページは無いです。
それが1000ページ以上続きます。
練習問題を全てこなせば、スキルはかなりアップするはずです。


またストラウストラップ先生は、Cスタイル(C言語のようなプログラミングスタイル)で「絶対にかくな」と本書中に何度も出てきます。
私自身、実はきちんと「Effective C++」を読んだ事は無いのですが、この本には「Effective C++」でのエッセンスが散りばめられてるように思われます。
C++作者による最新のC++のプログラミングスタイルを直伝されていると思うと、とてもわくわくします。
それと対比して、Cスタイルがいかに酷いか、という例示が何度も出てきます。
きっと、C++なんてbetter Cだっていう日頃からの批判の鬱憤を晴らしたかったのでは、なんて邪推までしてしまうくらいです。
実際、本書で語られるC++の書き方を行えば(行えれば)、少なくともCスタイルなんかよりは数倍も安全で綺麗なプログラムが出来上がると思います。

この本を読んで学んだ初心者プログラマは、あのにっくたらしいCスタイルでプログラムする事は無いでしょう。
そういう意味で、負の連鎖を断ち切るべく初心者プログラマは全員この本を読むべきです。


どこを読んでいてもワクワクしてきます。
ストラウストラップ先生の情熱がひしひしと伝わってくる。
翻訳もとてもこなれていて、読んでいて違和感を感じる所がとても少ないです。
読み物として面白いってのは重要です。


まとめると、

  • 最新の(C++)プログラミング手法を段階的に学べる
  • 現代的なソフトウェア開発手法を学べる
  • 確実にプログラマとしてスキルアップできる
  • 読んでいて楽しい
  • お値段以上の価値有り
  • 自分がプログラミング初心者だと思う人は全員買うべき
  • C++は素晴らしい言語


後で追記するかも。

(追記)
こちらの方がものすっごく良くまとめてあったので、リンク。
http://d.hatena.ne.jp/eel3/20110813
一部内容が対立してるっぽいけど、本質的に言いたい事は同じですよ、と。

ストラウストラップのプログラミング入門

ストラウストラップのプログラミング入門


Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

「数学ガール」読み終わって

書評

時代に乗り遅れて数学ガールを読みました。
噂に違わず、すっごく良い本でした。

数学ガール (数学ガールシリーズ 1)

数学ガール (数学ガールシリーズ 1)

リズムがすごく心地良いです。
最初の何ページか立ち読みしたとき、なんだこの安っぽい青春物語は・・・って思ったけれども、次へ次へとページを進めている自分に気付いてそのままレジに直行しました。

数学の世界。
厳密なルールの上に広がる世界。

正直、数学なんて分からなくても読めば良いと思う。
こういう世界があるって知ってるだけで人生変わるんじゃないかな。

『でも、数学は好きだ。好きだからやっている。そういうことだよ。』
『好きなことをしっかり追い求めていくと、本物と偽物を見分ける力も付いてくる。』

スコープと靴下

雑記

絶対領域、良いですよね。
ホームでふと、考えたのです。

何故、絶対領域は素晴らしいのか?

答え:魅力的な部分(太もも)「だけ」を露出しているから。


ほほう。


プログラミングでの定石の1つに、「スコープを小さくしろ」というものがあります。
ある変数等が影響する範囲を小さくする事で、ソースコードの可読性があがり、拡張性があがり、移植性があがり、テストが容易になる、と良い事尽くしのプラクティスです。

ある関数を見た時に、他の箇所を見る必要が無いようにしろって事ですね。
その関数を見る事だけに集中させろって事です。


ここで、思わぬ類似点が。
「見たい部分だけを限定して見せる」という発想は、
「ファッション」にも「プログラミング」にも通用する共通概念だったのです!(ドヤ顔で)


お粗末さまでした。