カテゴリー「プログラマのお仕事」の16件の記事

2017-03-07

古代史ビューア『麻呂』

 昨年から古代日本史の講座を受講しています。見附市の学びの駅ふぁみりあで月2回開催されている連続講座で、もう数年間も続いている息の長い講座です。

 講師の関根先生は長岡市でまちの駅「古事記COM」を主宰されていて、長年個人で研究を行われています。その研究スタイルは、通説にとらわれず徹底的に原典を分析する形です。
 この講座でも日本史講座には珍しくパソコン持ち込みを推奨していて、先生が整備された古事記や日本書紀などの原典をテキストファイルに落としたものをエディタで検索していくことで、ある事実や人物を浮かび上がらせていく手法をとっています。

 昨年末、ひょんなことから私が元プログラマだったことが話題になり、もっと使いやすいソフトを作ることができないかやってみることになりました。その結果、3月3日にリリースしたのが「古代史ビューア『麻呂』Ver.1.0」です。

Maro
 これが『麻呂』の画面です。上部にタブが並んでいますが、古事記、日本書紀、続日本紀、養老令、懐風藻、萬葉集といった名前が並んでいます。これらをクリックすることにより、各文献を切り替えながら閲覧できます。

Customsearch
 画面右上には検索関連の操作部があります。検索する文字列は正規表現をサポートしていますので、同じ人物でも出現箇所によって表記が変わっているものなどは、それに応じた表現をいれれば同一人物として検索できます。また、黄色い長方形に縦線が並んでいる部分がありますが、その語句が文書中のどこに出現しているのかをビジュアルに示しています。続日本紀などは年代順に記述されていますので、特定の語句が頻出する時期、まったく使われない時期などがすぐにわかり、その語句に関する時期による扱われ方の変遷などを読み取る助けになります。
 そして、講座で取り上げる語句を関根先生があらかじめテーマ毎にまとめて登録しておいたものが「カスタム語句」という画面になります。上の画面でいうと「石上麻呂の事績」というテーマで、関連する人物や物、地名などが適切な正規表現で登録してあり、これらを実際に検索しながら講座を聴いたり、あるいは今後はWebや書籍などで発表された場合、それらを読みながら検索したりすることにより、自分で確かめながら歴史を解き明かしていくことができるようになります。


About
 ちなみに、3月3日がVersion1のリリース日なのですが、先生の重要な研究テーマ「石上(いそのかみ)麻呂」の亡くなった日にあたります。

| | コメント (0)

2009-04-11

プログラミング書籍『コードコンプリート』

「コードコンプリート」~完全なプログラミングを目指して~ 
(スティーヴ・マコネル著)(日経BPソフトプレス刊)

20090412_code01
 プログラミングノウハウの名著として名高い本ですので今更という気がするのですが、あの分厚さ(それも上下巻)というボリュームのせいもあって、今まで読んでいませんでした。
 最近、トレード検証ツールをVBAで構築する機会があり、それを他のエンジニアと分担して作業したのですが、自分のプログラミングスキルの低さにほとほとあきれてしまい、一念発起してこの本を読み始めたというわけです。

■本書の位置づけ

 ソフトウェア開発には要求分析から始まって、システム設計、機能設計、コーディング、テスト、保守とさまざまな段階からなりたっています。この本はすべてを見据えてはいますが、その中心をコーディングにおいています。コーディングを中心としたソフトウェアコンストラクションがソフトウェア開発の大部分を占めるからです。

 
■とにかく素晴らしい

 こんな分厚い(上巻だけで600ページ)本なのに飽きずに吸い込まれるように最後まで読み進めることができました。よくある、あるべき論や精神論に終わっていず、具体的な手法をこれでもかというくらい実例豊富に説明しているのです。(例題はJava,C++,BisualBasic)
 私はもうすでに会社組織からは離れていますので、今は単なるアマチュアプログラマです。ですので、気楽に読めたということもあるのでしょうが、新人プログラマ(というか少し経験を積んだプログラマ)にはぜひ読んで欲しい、そしていつでも読み返して欲しい内容です。

■名前の付け方

 具体的な例としてもっともシンプルな内容を紹介したいと思います。
 プログラミングを行う際には、変数やルーチンの名前を付けますが、この単純とも思えることが以外と悩みます。この本ではこの名前付けに結構スポットをあてているのです。たとえばルーチンの名前付けですが、「そのルーチンで行っていることを漏らさず表現する名前にすること」としているのですね。そして、その結果長すぎるルーチン名になったら「設計が悪い、もっとルーチンをシンプルな機能にしないといけない」といってます。これは目から鱗という感じ。

■とりあえず何を実践したか

 最近作ったVBAの検証ツールで実践したことは以下の通り。

・ルーチン名、変数名を具体的に
・ルーチンは単一機能に
・マジックナンバーを廃止して、Enumを活用
・変数の宣言~初期化~参照はできるだけ近くに
・グローバル変数を制限する

こんな基本的な簡単なポイントを適用するだけでプログラムは美しく生まれ変わりました。

■座右の書に

 「座右の書」といったら人生訓などが書いてあるたぐいの本が選ばれるのでしょうが、「生涯一プログラマ」をモットーとする私にとってこの本はまさに座右の書としてふさわしい。時間のあるときはぱらぱらと確認し、年1回くらいは定期的に読み直したいです。

| | コメント (0)

2008-05-28

プログラミング言語で学んできたこと

 トレードシステムでお知り合いになり、私のPerlの師匠でもある
マイミクの方が最近書いた「プログラミング言語で学んできたこと」と
いう記事に触発され、すでに現役を引退したプログラマとして、自分と
プログラム言語とのつきあいをまとめておきたくなりました。

 懐古調の内容になるかもしれませんが、「生涯一プログラマ」が
モットーの私が今まで歩んできた言語から教わったものを書いてみたいと
思います。
 おおむね出会い順です。また純粋に言語だけでなく、プログラミング
環境みたいなものも含みます。

■FORTRAN(大学のシステムで使用)

 ・生まれて初めてのプログラミング言語に触れたこと
 ・I~Nで始まる変数名は整数型の暗黙型指定!
 ・TSS端末、パンチカード、机上デバッグ、ジョブリスト受け取り

■F-BASIC(富士通のFMシリーズにROM搭載されていた言語環境)

 ・「構造化」という考え方がプログラムを美しくすること。
 ・音楽演奏ソフト(バッハ/トッカータとフーガニ短調)が雑誌Oh!FMに掲載されたこと。

■N88-BASIC(NECのPCシリーズにROM搭載されていた言語環境)

 ・PCによるプログラミングが業務改善の大きなツールとなること。

■Turbo Pascal

 ・モジュール化の重要性が自然と身についたこと
 ・コンパイルという概念をPC上で知ったこと
 ・エディタを中心とした統合開発環境を使った開発
 ・ダイアモンドカーソルの合理性
 ・アプリケーションはOSの上で動作するということ

■CHILL(電子交換機専用命令を搭載したリアルタイムシステム用言語)

 ・構造化データとポインタの組み合わせの考え方を学んだこと
 ・並列処理と処理優先度の考え方を学んだこと
 ・状態遷移管理の大切さを学んだこと

■VZ Editor

 ・ツールに自分をあわせるのではなく自分に合わせてカスタマイズすること

■COBOL

 ・プログラミングとはデータ構造をいじることに他ならないと再認識したこと

■AWK

 ・スクリプト言語を学べた
 ・正規表現の便利さを知った
 ・テキスト操作というものの汎用性の広さを知ったこと

■Delphi

 ・Pascal言語は本当に自分の感性にあっていると自覚したこと
 ・言語や環境がすぐれていても普及するとは限らないと知ったこと

■UNIX-C

 ・SUN-OS,Solarisでワークステーションという環境を知ったこと
 ・メモリをコントロールすることがCのキモと納得する

■Visual BASIC

 ・入力支援機能の多彩さとそれに慣れてしまったときの怖さを知ったこと
 ・Microsoft(ビル・ゲイツ)のBASICにたいする執念を知ったこと

■Java

 ・本格的なオブジェクト指向に触れた最初の言語
 ・プログラミング力よりもライブラリやフレームワークを使いこなすことの方が難しいこと
 ・英語力がないと情報を得られないと実感したこと

■Visual BASIC.NET

 ・あらためてMicrosoft(ビル・ゲイツ)の執念を知ったこと
 ・今の自分にはMicrosoftのBASIC文化が心地いいとあらためて思ったこと
 ・NTestによるテスト駆動開発はプログラミング手法の革命だと思ったこと

■Perl

 ・単なるAWKの発展系かと思っていたけど、ばけものみたいなスクリプト言語だと知った。合理的かつ実用的な文法体系を持っている。
 ・しかも、Perlを愛しているプログラマが世界に山ほどいて活動している
 ・優秀なPerl使いから教えてもらえたことが幸せ

現役を引退した今でも幸せなことにプログラミングに対する興味は尽きていない。それどころかたっぷりある時間をどのようにあてていこうかわくわくしています。自分が生きているあいだにあといくつくらいの言語に出会えるのだろう。

| | コメント (0)

2007-10-27

『プログラミングでメシが食えるか!?』

プログラマーについてのエッセイ集みたいなものは何冊か出ているけど、徹夜の毎日を送ったりといった非日常的な職場環境を強調しているものが多いのではないか。(少なくとも立ち読みしていた範囲ではそのように感じている)

この本はちょっとまじめにプログラマーという仕事への取り組み方を書いている。

20071026programer01

前半がプログラミングスキルについて、後半が仕事への取り組み方についてとなっている。

全体を通して著者が訴えているのは、「自分の得意とする専門領域を作り、最大限それを活かすようにキャリアを作っていく」ということだ。たしかに自分の柱となる技術を持っていれば、周囲からも自然に一目置かれるようになり、自分の得意とする仕事が自然と集まってきていいスパイラルとなっていくだろう。

ただ、著者もふれているように、現実はなかなかそうはいかないことが多い。特にプログラマーという立場はシステム開発の下流工程が活躍の場なので、自分で引き寄せるのは難しいところがあるだろう。

この本に関しては「内容が一時代前のもの」というような批判もあるようだけど、たしかに現在の大多数のプログラマーが舞台としている業務アプリケーションの世界では規模が大きなプロジェクトも大きいだろうし、技術的な制約が大きな中で仕事をしていかなければいけない。

しかし、著者の言っていることはしごくまっとうなことであり、何もプログラマだけでなく、一般に物事に取り組んでいく際の心構えとして十分通用することだと思う。

個人的には冒頭で書かれているようなトップダウンの構造化プログラミング手法は、昔から私の最も得意とする手法だったのでうれしかった。ただ、今のプログラミング基盤ではなかなかこうはいかないだろう。

| | コメント (2)

2007-04-14

闘う●プログラマー

最近やけにプログラミングに関して恋しくなってきている。仕事から離れて自由にプログラミングを楽しもうと思っていたのだが、まだ具体的な行動に移れていないのだ。けど、この手の話題に気持ちは強く惹かれている。

この本はヨドバシカメラに言ったときに書籍コーナーで目に入って購入したものだ。

Tatakaup_1
発刊は3年前だし、中に書かれているのは5~6年前の頃の話題なので技術的にはかなり以前の話なのだけど、「プログラマ」にスポットをあてている本はそう多くないし、その生態についておもしろおかしく書いているのに興味をもったのだ。

作者は自分のことを糞プログラマと言っているが決してそんなことはない。志を高く持った立派なプログラマだ。

Webサイトに載せたコラムをそのまま書籍にしたのだが、プログラマの地位(特にSEに対して)、プログラマの生態、プログラミングについての将来など話題は多岐にわたっている。おもしろいのは傾向がプログラミングの技術的な話からだんだんと対顧客や新人の教育などに移っていることだ。

一つ謎があるのだが、最初の頃は自分のことを「オイラ」と呼んでいたりして、すっかり男性だと思っていたのだけど、結婚の話題のあたりで「え、このひと女性なの?」と思うような記述が出てきていることだ。「亭主は」とか「主婦している」とかという表現が出てくるのだ。なんか作者は女性のようだ。

現在は抑うつ症で休職中ということだ。

| | コメント (0)

2004-11-01

川俣晶さんによるテスト駆動開発のススメ

 日経BP社(日経ソフトウェア、日経バイト)が主催した「次世代開発ツールフォーラム」に行ってきました。明治記念館で11時から6時くらいまで盛りだくさんのプログラムを聴くことができました。

 おもしろかったのは午前中の「緊急討論会、どうなるこれからのソフトウェア開発」と題したパネルディスカッション。ボーランド、マイクロソフト、IBM(ラショナル)、オラクルといったツールベンダ界の雄が一堂に会して、日経ソフトウェアの真島編集長からの質問に答えていました。それぞれが、それぞれの会社を背負っていながら、微妙に個人的な意見が出ているところが面白いと思いました。

 それはさておき、一番面白かったプログラムは@ITでおなじみのピーデーの川俣晶さんが話された「VisualBasic.NETによるテスト駆動開発入門」でした。最近「Microsoft.NETでのテスト駆動開発」という本を読んだばかりだったのでグッドタイミングでした。@ITでの雰囲気とまったく同じような口調(文調)で精力的にお話をされていました。
 曰く「テスト駆動開発は、プログラム言語が機械語から高級言語になったことに匹敵する」ということだそうです。すごいと思いませんか?
 40分間という短い時間で十分なデモをみれなくて残念でしたが、その熱意から「すごいんだろうなあ」という意識はすごく持つことができました。必ず実践してみたいと思います。

 レッド→グリーン→リファクタリングという状況をリズム良く繰り返していくことにより、「仕様」自体がプログラム言語で表され、いつでも正しさが検証できるプログラムが短期間に作成できるという、テスト駆動開発ですが、一番いいのはアジャイル開発方法論などのように敷居が高くないということだそうです。開発チームの中の一部のグループ、あるいは一人からでも始めることができるというのが大きな利点と言ってました。

 機会があれば、もっと詳しくお話を聞いてみたいと思いました。書籍化してくれないかなあ。

2004/11/03 追記
@ITに川俣さんの記事が載っていました。去年の11月になっているけど、そういえば当時読んだ覚えがあります。当時は.NETプログラミングにはまだ興味がなかったのであまり印象に残っていなかったのかもしれません。
http://www.atmarkit.co.jp/fdotnet/special/tdd/tdd_01.html
http://www.atmarkit.co.jp/fdotnet/tools/nunit2/nunit2_01.html

| | コメント (0)

2004-07-11

ソフトウェア開発環境展

 金曜日、東京ビッグサイトにソフトウェア開発環境展(SODEC)を見に行ってきた。

 一応、お目当てはグレープシティーで印刷コンポーネントについて質問をすることと、マイクロソフトのブースでたぶんプロモーションされるであろう開発ツールの2005年版の情報を得ることだ。
 10時の会場とともに入場して、入り口のすぐ左にグレープシティーのブースがあったんだけど、とりあえずまっすぐ進んで「リゲイン差し上げます!」という女の子の声につられてウイングアローのブースに入った。リゲインがうずたかく積まれていて「プログラマのみんな、元気だせよ」と言われているようで何となくもの悲しく感じてしまった。入場したばかりだったけど、このブースで製品説明セミナーを15分くらい聞いて場内の雰囲気になれて心の準備を。場内はいきなりテンション高いからおじさんとしてはちょっとエージングが必要だった。

 そして、グレープシティーのブースに行って目的の質問をした。担当の方といすに座り20分くらいじっくり話せてとてもよく理解できた。これだけで今日来た甲斐があったというものだ。質問は「印刷コンポーネントでVS-ViewとActiveReportsの違いについてと、技術的な確認点を2点。明快な回答をいただいた。

 その後ぶらぶらとブースを覗いていった、インターシステムズのCacheのデモンストレーションでは立ち見が出来ていた。雑誌でもいろいろ取り上げられているので注目が集まっているのだろう。ここでは、クラス定義してSQLを使用しないオブジェクト呼び出しを行う際の検索方法について担当者の方に質問してお話を聞かせてもらった。
 回答は「オブジェクトによるアクセスは基本的には順次サーチで目的のインスタンスを見付ける」ということだった。当然SQLによる検索に比べれば遅くなる場合が多いということだ。これを早くするには組み込みのSQL検索を併用するということだが、これだったらSQLアクセスとして割り切った方がすっきりすると思う。
 Casheを活かすには基本的にはSQLアクセスとし、クリティカルな部分でネイティブアクセスを使うというのが正しい使い方かもしれない。

 そのほか小さなブースだったがおもしろい製品がいくつかあった。中でもフューチャーデベロップメントという会社のTransaction Chaserというのがおもしろかった。RDBのトランザクションを監視し、変更前と変更後のログをトラップし、どのような更新が行われているのかをレポートする製品だ。基本的にはデバッグで設計通りの更新が行われているかを検証するのが目的の製品だが、担当の方が言うには、設計書が整備されていない製品について、どのような更新が行われているのかを解析するツールとして使うとおもしろい、とのこと。う~~ん。どちらかというと後者の方が需要が多いのではないだろうか。評価版をいただいたのでさっそく使ってみたいと思う。

 マイクロソフトのブースではやはりVisualStudio2005とSQLServer2005の二つを大々的にプロモーションしていた。この頃なぜだか急激に眠気が襲ってきて、いすに座って聞いているとコックリ・コックリしてしまった。だいたい内容は分かったので早々に引き上げて帰路についた。

| | コメント (0)

2004-06-23

Microsoftのセキュリティセミナー

 Microsoft主催の「セキュリティ・システム・トレーニングforDeveloper」を受講してきました。新宿住友ビルのマイクロソフトトレーニングセンターです。
 内容は
1.アプリケーションセキュリティの基礎概念の習得
2.実践!セキュアなコードの記述Part1
3.実践!セキュアなコードの記述Part2
4.実践!.NET Frameworkを利用したアプリケーションセキュリティの実装

 なかなか聞きごたえがありました。中でもバッファ・オーバーランについては簡単なサンプルでの実行を交えてかなり細かく説明していました。「基礎概念」では暗号化、ディジタル署名、ディジタル証明書、SSL、認証、承認などほんとにセキュリティに関する基礎をおさらいしましたが、実はこれらは3種類のセキュリティセミナーの他のトラックで詳しくやっているんですよね。今回の中心はやっぱり実際のコード記述の話です。
 今日の話で一番力が入っていたのは「脅威のモデル化」という部分でした。対象のシステムについてどこが危ないのかを評価しようというためのツールです。それが明らかになればベストプラクティスが明確になると言うわけです。

 それにしても最近マイクロソフトは啓蒙活動にかなり力を入れていますね。スマートクライアント、セキュリティなど開発関連でも無料セミナーが目白押しです。例のLinuxとのTCO比較キャンペーンも啓蒙活動に入るのでしょうか。開発関連ではかなりJ2EEとの勝負を意識しているように思えます。

 私の個人的感想ではJavaの混沌とした世界よりもMicrosoftの1社統制の世界の方が安心というか落ち着いていられるというかあまり気を使わなくていい分効率的に感じます。Sunとも和解したしこの先両技術が融合されてくるといいんだけど。

| | コメント (0)

2004-06-22

情報処理試験合格!

 今年はかなり根を詰めて勉強した情報処理試験ですが、月曜の正午に合格発表があり、無事合格でした。データベースは合格率7~8%だと思いますからよく合格したものと思います。

 正午ちょっとまえから合格番号照会のページを出してページ更新を繰り返していたのですが、正午きっかりに照会が有効になりましたね。私の番号の前後50人くらいは私と私より2つ若い番号があるだけで、あとは空白でした。やはり激戦だったようです。

 今年から受験票に記載してあるパスワードを入れると点数を見ることができるようになったのですが、午前、午後Ⅰはわりと余裕だったのですが、午後Ⅱは合格ラインぎりぎりでした。去年は午後Ⅰが時間に負けたので今年はそこにポイントを置いて、特にパターン化した出題は何も考えずにとにかく回答を書けるように勉強してきたのですが、それが功を奏したようでした。午後Ⅰは「第4正規形」といういままでにない内容が出題されたにもかかわらず、余裕でした。

 とりあえずヨカッタよかった。

| | コメント (0)

2004-05-14

「基礎からわかるデータベース構築ガイド」読了

 データベースに関する書籍はたくさん出版されていますが、一番多いのはSQL言語の操作方法に関するものでしょうか。次に、ある特定の製品に的を絞ったインストールから使用法までを扱った類のものだと思います。
 本書「基礎からわかるデータベース構築ガイド」(日経BP社刊)(インサイトテクノロジー、日経システム構築共著)は上記以外の分野、主にDBAと呼ばれる人たちの仕事の分野を扱ったものです。DAが業務要件からデータの正規化などを行い論理設計を行った後を受けて、DBAが物理設計を行います。目的はデータベースがトラブルなく安定的に稼動するための設計となります。トラブルとはDBが遅くなる、DBが止まるの二つがありますが、遅くなると言うのは現実に切実な問題だと思います。現に私も現在この問題に直面しています。

 目次を抜粋すると

Part1 DBスペシャリストの役割と仕事
  DB設計の重要性、DB設計の仕事、コア・スキル、RDBMSを理解する
Part2 これだけは押さえたいDB設計の基礎
  仕事の内容と必要な知識・スキル、失敗から学ぶ物理設計の役割と仕事、設計に必要な情報/知識、設計の手順
Part3 実践から学ぶチューニング技術
  仕事のタイミングと必要な知識・スキル、DBが遅くなる原因、原因の調査法、チューニング方法
Part4 堅牢なシステムを作る運用設計
  仕事の内容と必要な知識・スキル、運用時に発生するトラブル、運用設計のポイント、効率的な監視方法、失敗しないバックアップ/リカバリ

 どうでしょうか、魅力的な言葉が並んでいると思いませんか。DBの論理設計はできてもなかなか物理設計まできちんとやっている例はお目にかかったことはありません。将来の業務量から見積もったキャパシティプランニングや、各表やインデックスなどの特性を勘案した領域定義、ディスクの特性を見据えたファイル配置など、重要だとは知りつつなかなか手が出ないと言うところです。

 また、DBの性能が劣化した際の調査方法や、原因特定のポイント、その後のチューニング方法まで詳しく説明されています。残念なのは実例がいずれもORACLEについて記述してあるために、私が現在携わっているSQLServerなどは直接あてはまらない部分があることです。ただ考え方は一緒ですのでアプローチ方法を知るだけでも大きな武器となると思いました。

 情報処理技術者試験のデータベース試験にも運用管理の問題は出題されますが、なかなか手が出ませんでした。この本を元に現在直面しているデータベースの性能問題にアプローチしてみようと思います。

| | コメント (0)