サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
rabbit2go.hatenablog.com
「この位の仕様で上手く作っておいて」とひと言伝えておけば、望み通りのシステム一式が出来上がって来ると嬉しい。これなら細かい点まであれこれと指示する必要も無く手間が省けるし、期待通りのモノが期待通りの納期、品質で出来上がってくれば万々歳だ。 しかしながら、世の中、そんな「あうんの呼吸」が通じる関係というものはなかなか無い。明文化できないノウハウは暗黙知として開発者の頭の中に入ったままなので、頼れる人がいなくなってしまうと、誰も作業を代行できない。長年に渡って作業を担当してくれていたベテラン開発者も「寄る年波には勝てず体調を崩して休み」が続くと、途端に問題が噴出してしまう。 だからこそ、設計資料は必須だ。組織として開発をすすめる以上、人が入れ替わっても作業を継続出来るように設計情報の伝授は不可欠なのだ。何を何処まで作成するのか開発スコープを定め、設計の意図や方針検討時の代替案などソースコードに
Amazon S3のアクセスログを集計する必要が有ったので、方法を調べてみた。(Amazon S3側のアクセスログ出力は設定済みという前提) ログは意外にややこしいフォーマットで下記の解析をすれば良いとは分かるのだけど、今回はそこまでの時間がなかったので、ツールの導入をメインに調べてみた。 AmazonS3のサーバーアクセスログをパースして変換するために使った方法をご紹介します。 [AWS][Java] AmazonS3のサーバーアクセスログを解析する [正規表現] | DevelopersIO 必要な要件は下記の通り。 簡単に道入出来ること サーバの運用管理者が使うような高機能なものでは無くて良く、機能は限られていても良いので簡単に導入出来て直ぐに使えるツールが望ましい。 必要な情報は限定的 Amazon S3のアクセスログなのだから、処理時間などは不要。単純にリソースへのアクセス件数や
Redmineのwikiには、基本的に箇条書きで情報を記載するようにしている。記載は簡単だし、見た目も良い。しかしながら、中には箇条書きではなく表形式で表示させた方が分かりやすい類の情報も有るし、Excel文化の名残りなのか何でもかんでも表にしなければ気が済まない人もいる。 箇条書きなら簡単なwikiも表を書くとなると少々手間がかかる。行と列の整合が取れるように注意深く記載するものの、セルのデータが予期せぬ箇所に表示されたりするので、プレビュー機能を使って何度も記載を確認する羽目になる。 そんな訳で、ある程度まとまった情報を記載する際には、一旦Excelで記載したデータを、下記のツールを使ってwikiフォーマットへ変換するようにしている。これならデータの配置に悩む必要はないし、少なくともイチから全て表を書くことに比べたら、手間は大きく削減できる。 ExcelのRedmineのテーブルをRe
以前のエントリ「Jenkinsの環境変数のバグにはまる」で取り上げたJenkinsの環境変数BUILD_IDのバグをウォッチしていたのだけど、結局、修正されないことに決まってしまった。下記に理由が載っている。 Assuming the maintainer of the Zentimestamp plugin is responsive (I do not follow it), this should be simple to implement there, and provide more flexibility anyway. (The old BUILD_ID lacked millisecond resolution, whereas Jenkins now supports >1 build of a given project per second, making time
サーバに置かれたExcelファイルの更新を定期的に確認するという心躍る楽しい作業が有る。たまにファイルを見に行って、ファイルが更新されているか否か確認するだけの単純作業とは言え、せっかく確認しても更新されているとは限らないし、第一、桜が花開く春の季節にそんな退屈な仕事をするようでは心が寒くなってしまう。そこでJenkinsにファイル監視を代行させることにした。 前提条件 Windows上でJenkinsを稼働させている サーバに置かれたExcelファイルはJenkinsからアクセス可能である(アクセス可能な権限でJenkinsが動作している) ファイル更新の監視 Jenkinsのジョブのトリガーには、ファイル監視を行うFSTriggerプラグインを利用した。単純に更新のタイミングさえ分かれば良いのなら、これだけで良い。 FSTrigger provides polling mechanis
Jenkinsで使われる環境変数には似たようなものが有ってややこしいが、次の定義になっている。 BUILD_NUMBER "153"のような現在のビルド番号。 BUILD_ID "2005-08-22_23-59-59" ( YYYY-MM-DD_hh-mm-ss 形式)のような現在のビルドのID。 Building a software project - 日本語 - Jenkins Wiki 要するに"NUMBER"はシリアル番号で、"ID"は日時というわけだ。必要と目的に応じて、この両者を使い分ければ良い。例えば、リリースのファイル名に付けるなら「何回目のリリースなのか」分かるようにBUILD_NUMBERを使っているし、バックアップのファイル名に付けるなら「いつのバックアップなのか」分かるようにBUILD_IDを使っている。両方ともに便利だ。 しかしながら、ある時、Jenkinsの
MacOSX 10.9.2 (Mavericks)にて、Eclipse 4.3 (Kepler)を起動させようとすると、Java SE6のインストールを求められてしまう。 "Eclipse.app"を開くには、Java SE6ランタイムが必要です。今すぐインストールしますか? しかしながら、既にJava SE7 update55をインストール済みなのだ。 $ /usr/libexec/java_home -V Matching Java Virtual Machines (1): 1.7.0_55, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home /Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
MacOSX 10.9 (Mavericks)にて、Redmineを2.4.3から2.5.0に更新した。動作環境は下記の通り。 MacOSX 10.9.2 (Mavericks) Xcode 5.1 いつも通りのコマンドを叩くが何故かエラーが発生してしまう。 $ sudo bundle install Fetching gem metadata from https://rubygems.org/......... Resolving dependencies... Using rake (10.1.1) Using i18n (0.6.9) Using multi_json (1.9.0) Using activesupport (3.2.17) Using builder (3.0.0) Using activemodel (3.2.17) Using erubis (2.7.0) U
BitnamiのRedmine 1.2.1(!)を最新版の2.5.0に更新したので、覚え書を残しておく。動作環境は下記の通り。 Windows 7 Professional/SP1/x86 インストールしたのは下記だ。 bitnami-redmine-2.5.0-0-windows-installer.exe Install Redmine, Download Redmine インストール自体は全く問題なく、正常に起動出来ることを確認した。(下記のインストールパスは、%REDMINE_HOME%と記載) C:\app\Bitnami\redmine-2.5.0-0 以下、設定を行う。 プラグインをコピーした(必要に応じて最新版に入れ替えた)。 %REDMINE_HOME%\apps\redmine\htdocs\plugins テーマをコピーした。 %REDMINE_HOME%\apps\
一昨日(2013/4/19)はSEA関西プロセス分科会に参加してきた。講演は、オムロンソーシアルソリューションズ(株)幡山五郎氏による、自動改札機のテストの話だ。既に昨年の講演を取り上げた記事も出まわっており概要は知っていたが、今回は直接話しを聞くことができた。 自動改札機の運賃計算プログラムはいかにデバッグされているのか? 10の40乗という運賃パターンのテスト方法を開発者が解説(前編) - Publickey 講演は自動改札機の歴史から始まり、内部構造や機能の紹介、切符を扱うハードの検証から運賃計算(ソフト)の検証に重点が移ったことが紹介され、本題の検証の話題に入った。以下、講演メモより抜粋。 テストパターンはまず全体を定義して、条件を絞り込むという考え方が有効。昔は個別のケースを積み上げていたが、それではキリが無いし重要なポイントを外している危険もある。仮に検証漏れが発生しても、それ
新年度の始まりを目前にして、積極期な生き方を続けている知人と話し込む。世間的な尺度で見れば充分成功者に位置するはずだが、その裏では緻密に様々な計算をして動いてきたらしい。その一例を紹介。 英語は出来るけど会社は日系 英語が堪能なら外資系に入るべきと思うのは短絡的な発想。そんな競争の激しい所で働き続けるのは大変。むしろ周りに英語が出来る人がいないコテコテの日本の会社だと、仕事で英語が必要になる度に常にお呼びがかかり、海外出張も好きなだけ行ける。 ITはバリバリだけど所属は非IT系 デキル人たちの中で激しい競争に巻き込まれるのは、始めのうちは良いかもしれないけど、何年も続けるのは大変なこと。むしろ、半歩くらい遅れた組織の方が自分の立ち位置を余裕を持って確保できるし、あいつに聞けばなんでも分かるという必要不可欠な存在になれば、決してメインストリームから外されたりしない。 技術はピカイチだけど業務
Tracには「wiki」しかなかったのに、Redmineでは他に「フォーラム」なる仕組みも用意されていてややこしい。目的に応じて使い分けよ、とは確かに一つのアドバイスだとは思うけど、初めて使う人にそんなことを言っても通じないだろう。そんな訳である程度の指針や具体例が必要になるわけだが、今のところ、次のように使い分けている。 フォーラム 一度掲載したら変更しない文書用。具体的には、メールの共有保管場所だ。一度送ったメールはもう2度と変わらない(変えようが無い)し、スレッドごとにまとめて掲載できるので、後からの参照も容易だ。これで、チーム内に「情報共有」と称した無駄なメールの展開を減らせるようになる。 Wiki 何度も情報を更新する文書用に使っている。具体的には、チーム内の作業手順や障害の発生例と対策事例、ツールの手順や仕様書の類だ。これは一度書いたら終わりというものでも無いし、その履歴が実は
寒い寒いと手をこすりつつ、近所のファミレスに入った時のこと。ニコニコと愛想の良い店員さんは、メニューと一緒に氷の沢山入った水を持ってきた。真夏の暑い時に入ったのならともかく、真冬の寒い時期に入った店で冷たい水を有り難いと思う客は一体どの位いるのだろうか?少し考えてみれば分かるように、こんな時に嬉しいのは冷たい水ではなくて、温かいお茶だろう。その程度の想像力も無くて客商売が務まるのだろうか? もっとも、そんな無責任なコメントが言えるのはこちらが商売の素人だからだろう。店の側から見れば、夏は氷水、冬はお茶と分けて出すようにしたらコストがかかるし、お茶を出したのに氷水に交換を要求する我がままなお客もいるだろうし(たぶんワタシ)、中間の春と秋の季節には一体どちらを出した方が適切なのか?といった問題が次々と出てくるのだ。 たぶん、その辺の厄介な問題を考えないようにするために「いついかなる時にも氷を小
Windows7のデフラグやクリーンアップには下記のフリーソフトを使っている。動作は軽いし処理は速いし機能的に申し分ない。 CCleaner インターネットの一時ファイルやごみ箱内のファイルなどを一括削除したり、レジストリの問題点を解消したりしてくれるシステムメンテナンス用ツールです。 CCleanerの詳細情報 : Vector ソフトを探す! Auslogics Disk Defrag 断片化したハードディスクを高速に最適化できるデフラグソフト。Windows標準のデフラグツールに比べて最適化の効果は若干低いようだが、大容量のハードディスクでも高速に最適化できるのが特長。 「Auslogics Disk Defrag」のページは移転いたしました 気が向いた時にやっていれば良いとは言え、そのような作業を定期的にやらなければならないと記憶しているのは面倒だ。もう少し自動化出来ないものかと思
2013年の仕事が始まって1週間が経つというのに、年を書く時には時々「2012年」と書いてしまうことが多い。ようやく2013年という書き方に慣れた頃にはもう2014年が始まっていたりするわけだが、そんな風に時代の変化に追いついていけなくなってしまったら歳の証拠なのだろう。(たぶん嘘) 最近のかな漢字変換は賢くて「きょう」と入力すると「2013/01/12」と変換してくれるし、「いま」と入力すると「午前11時31分」と変換してくれる。誰が考え出したのか知れないけど便利な仕組みだ。そのうち「ここ」と入力したらGPSから拾った今の住所を入力してくれたり、「いまのきもち」と入力したらユーザの気持ちを読み取って「くたびれている」と変換してくれるようになるのかも知れない。なんせ面倒な作業を賢く片付けるのがコンピュータの役割のはずだ。きっと誰かが作り出してくれるに違いない。(やや期待) メールや文書に日
会社で開発の仕事を続けていると、どうしても知識に偏りが出てしまう。仕事で使うからという理由で専門知識が増えていくのは有り難いことだとは思うけれど、だからと言って専門家として書籍を書ける位に深い知識が身に付くわけでもないし、新しく開発した技術を特許として出せるものでもない。せいぜい、APIをたくさん覚えたので一連の処理は素早く作れるとか、ドメイン知識が深まったので開発対象を容易に理解できるようになったとか、仕事のコツが分かったので素早く回せるとか、その程度であることが多い。 これは確かに大切なことだし、会社から求められる責務を果たしているとは思うけど、この変化の激しい時代に昔の技術にしがみついているのは、技術者として或いは組織としてかなりリスクが高い気もする。例えば、以前なら苦労して自分で作っていた機能が、最近のフレームワークを使えば簡単に実現できるようになっていることが珍しくない。宴会の席
「仕事だから忙しいのは当然のこと。忙しくなかったら会社が潰れてしまうよ」と減らず口を叩きながら仕事に励むものの、忙しさには様々な危険も伴うので注意が必要だ。 優秀な人材が職場を去ってしまう 開発のプロとしてデスマーチを乗り切るものの、そんな環境に嫌気が差して退職届を持ってくるのは何故か優秀な開発者であることが多く、逆に居残るのは「取り柄は長時間労働に耐えうる体力だけ」という体育会系開発者だけだったりする。 技術の進歩に取り残されてしまう 技術的に進歩のある前向きな仕事なら良いのだけど、実際には、どこかの誰かが昔作ったバグの原因調査に時間がかかっていただけ、と言った時間消費型作業が多く、気がつくと技術的な成果が過去1年の間に何も無かったりする。 思考停止に陥ってしまう 物事を考えるには落ち着いた時間と心のゆとりが必要だ。朝から晩まで忙しさが続く状況では良いアイデアは生まれないし、建設的な議論
知人とコソコソと世間話。最近の開発現場は面白いことが多過ぎるという点で意見が一致してしまう。その一例。 人の入れ替わりが激しくて技術やノウハウが蓄積しない。忙しくなるとスキルよりも経験よりも頭数を揃えることを主目的にやたらと人を集めるものの、プロジェクトが終わると直ぐさま関係を切ってしまうので継続的な蓄積が何も残らない。 コンプライアンスの掛け声の下、関係者以外にも情報が見えてしまうホワイトボードやRedmineによる情報共有はご法度。セキュリティ対策も厳しくなる一方なので、ソフトをダウンロードしてパソコンに入れるだけで、正義感の塊のような監視委員から直ぐさま電話がかかってくる。 行き当たりばったりの対策を取り続けているので、何か問題が有ってもブレーンストーミングで出てきたようなアイデア案ばかりが続く。根本原因を探ることをしないし、そもそもそんな追求を行うスキルすら無い。 人月単価に惹かれ
128GBのSSDで購入したMacBook Air (Late 2010)だけど、さすがにSSDの空き容量が少なくなってきた。元々SSDの容量が少ないのに、いつも持ち歩いて使うために色々なデータを詰め込んでいるせいだ。これではLionからMountain Lionへのバージョンアップも厳しいので、256GBのSSDに交換してみた。手順は下記のとおり。 TimeMachineを使って最後のバックアップを取る。 「Lion復元ディスクアシスタント」を使ってUSBメモリに起動ディスクを作る。 OS X 復元ディスクアシスタント MacBook Airを分解してSSDを交換する。(ドライバで裏蓋を外してSSDを入れ替えるだけ) 上記のUSBメモリを挿して、「Option」キーを押しながらMacBook Airを起動する。 Time Machineを使ってバックアップからの復元を行う。 動作は軽快で
開発現場にいると時々不思議な言い訳に出会うことがある。 「言われた通りに作業しました。だから自分に落ち度はありません」 「そんな指示は受けていないので、やりませんでした」 「そんな処理は仕様書に記載されていません。だから実装していません」 指示されていないことはやらない。これは正論だ。うかつなことを言い出せばタダで追加作業をやるハメになってしまうし、下手をすれば自分の責任問題に発展してしまう。損する宿題を持ち帰ると上司に怒られるし、面倒ないざこざはご免だから、徹底的に自己弁護の姿勢を貫いているらしい。確かに、言われた通りにやったという顛末は役立つ情報だし、弁明としては悪くないとは思うけど、これがいい歳をした開発者の言うことなのかと呆れてしまうことも多い。 何も指示されていないからこそ、自ら問題を見つけ出すのが本来あるべき姿だと思うし、問題の存在に気づいたのなら知らんぷりせずに率先して持ち出
失敗プロジェクトに放り込まれて困っています、仕事は面白くないし退屈だし、ゴールも見えないしどのような方向に進んでいくのか分かりません、自分の時間が勿体ない気がします、どうしたら良いのでしょうか?と切実な悩みを抱えた人からの相談を受けた。残念ながら失敗プロジェクトを成功プロジェクトに変える魔法の杖は持っていないので、一つの考え方として次善の策を出してみた。 ツールの使い方を学ぶ プロジェクト自体から学ぶのが理想だが、核心部分から学べないのなら、その周辺から何かを学び取らねば勿体無い。例えば開発ツールの使いこなし方や、報告書作成用のマクロ、問題箇所を除いた他の部分からの技術習得は、格好のターゲットの一つだろう。次に生かせないような一時的な技術よりも、次のプロジェクトでも引き続き利用できる技術を学び取るべきなのだ。 問題探索の方法を学ぶ 失敗プロジェクトということは問題点も多数残存しているはずだ
MacOSXで運用しているTracを0.12.3から1.0に更新した。動作環境は下記の通り。 MacOS X 10.8.1 (Mountain Lion) Trac 0.12.3 (MacPorts) Python 2.6 Tracの更新はいつもの様にコマンド一発で完了。 $ sudo /opt/local/bin/port upgrade trac 下記のコマンドで既存のプロジェクトを更新した。 $ /opt/local/bin/trac-admin-2.6 traconmac upgrade $ /opt/local/bin/trac-admin-2.6 traconmac wiki upgrade 念のためバックアップを取ってから更新したけど、特に問題なく正常に起動した。久しぶりのメジャーバージョンアップなので変更箇所が多く、その一覧は下記で確認することが出来る。 TracDev/R
MacにSCM-Managerを導入したので、その覚え書。利用環境は下記の通り。 MacOSX 10.8.1 (Moutain Lion) SCM-Manager 1.20 Mercurial 2.3 (MacPorts 2.1.2) 導入 下記よりscm-server-1.20-app.zipをダウンロード。 sdorra / scm-manager / wiki / download — Bitbucket 起動は簡単。 ./bin/scm-server あとは下記にアクセスして設定を行えば良い。 http://localhost:8080 リポジトリのデータや設定は下記に入っている。 ~/.scm メリット 導入が簡単 必要なライブラリ等が全てパッケージ化されているので、アーカイブをダウンロードして簡単に試すことが出来る。 複数の構成管理を一括管理可能 デフォルトではSubversi
遅ればせながら、MacBook AirをMountain Lionにバージョンアップした。以前ならDVDの配達をずっと待っていたものだが、今ではオンラインで更新ができてしまう。便利な半面、宅配便の荷物をワクワクしながら待つ楽しみが無くなってしまったのは惜しい。これも時代の流れだから、仕方ないことなのだろうけど。 さて、Mountain Lionのインストールは順調に済み、既存のアプリケーションの動作をチェックしてみた。(Lionで使っていた環境をそのまま引き継いでいるので、新規インストール時にはまた別の問題が生じるかもしれない) Apache システム環境設定の設定項目は無くなってしまったが、従来通り使える。 $ /usr/sbin/apachectl -v Server version: Apache/2.2.22 (Unix) Server built: Jun 20 2012 13:
経験則に基づく話。ソフトウェアの品質評価を行う際には、全く未知の障害を見つけ出そうとはかない努力をするよりも、既知の障害に基づく評価を行う方が、費用対効果が高くて効果的ではないかと思う。新規の開発対象や言語、開発環境、ドメインを対象にしたシステムでは、どのような観点で評価を行ったら良いのか、幾ら仕様書やドキュメント類が揃っていてもなかなか分からないことが多い。ソフトウェアテストの教科書通りに従っても、現実にはなかなか思うようにならないのだ。 ところが、以前に似たような開発をしたことがあるとか、対象ドメインの知識を持ち合わせている、古いシステムのことを理解している、開発者のスキルレベルをよく知っている、となると評価は俄然やりやすくなる。なんせ何が弱点であり、どのような評価方法を用いれば良いのか分かっているのなら、まずはそのウイークポイントから確認するのが有効なのだ。わざわざ小難しい評価を行う
開発の現場では毎日様々な問題が発生するし、対外的な打合せや非定型業務、割り込み作業も多くて、リーダと言えども、開発チームの進捗状況を必ずしも全て把握出来ているとは限らない。自分が逐次作業指示を出してメンバを動かすのが仕事とはいえ、指示を受けないと自ら動いてくれないという人はいるし、各作業間の優先順位付けや方針を決めるのはやっぱりリーダの判断に基づくものだから、どうしても自分の存在が不可欠になってしまう。 そんな時に考えるのが「自分がもう一人欲しい」という願望だったりする。決して2倍の仕事量をこなしたいという意味ではないのだけど、自分自身の仕事を進めつつも、チームの面倒を見ることが出来るのなら、それは有り難いことだ。何と言っても判断するのはあくまでも自分自身だから、期待通りの結果に導くのは容易なはずだ。他人任せにしたばかりに、予期せぬ結果になってしまったという悲惨な状況を避けられるのはかなり
「時間が無い」という人に限って余計な話が多いのは、なかなか興味深い事実だけど、そんな人の世間話、愚痴話、無駄話、閑話、噂話に付き合っていたらいつまで経っても自分の仕事が片付かないので、ふんふんと適当に相槌を打って切り上げることにしている。そんな冷たい態度を取って人間関係が悪くなったらどうしよう?なんて言い出す人もいるけど、そのような考え方は余りにナイーブ過ぎるのではないだろうか。人は人、自分は自分と割り切って生きて行かない限り、ひたすら他人に流されるだけの人生になってしまうのだ。 とは言え、そんなドライな生き方をしていても、残念ながら自分の仕事は山積み状態。これを全部片付けるまで頑張らなきゃと、昔はまじめに取り組んでいたような気もするが(もう忘れた)、人間歳を重ねると要領を覚えてくるので、実はそれほど手間はかからなかったりする。そんな考え方の一例。 まずは80%を達成して目処を付ける 締め
その昔、ある偉い人が会議に出席する時に必ず若手の人を連れてきていることに気がついた。他にそのような若い人を連れてきている人はいないし、特に発言もしていないから会議に来る必然性は無いはずだ。国会での大臣の答弁の如く、偉い人の補佐をしているのだろうか?自分の席に帰しておけば少しは仕事が進むはずなのに、その時間を取って自分のために使わせるとはなかなか贅沢な人の使い方だ。 そんな光景を何度か目撃してから、その偉い人とたまたま話をする機会があり、いつも若手の人を連れて会議に参加している理由を何の気なしに聞いてみた。すると、こんな答えが返ってきた。 仕事をやれと言われても、具体的にどうやるのか分からないことも多いし、変なやり方を覚えてもらっても困るので、出来るだけ自分の仕事のやり方を見せて学んでもらうようにしている。特に会議の場では、賛成だけではなく反対意見を持ち出す人もいるし、議論の進め方を見るだけ
その昔、上司と出張した時の話。出先での打合せが終わり電車で帰ることになったのだが、切符を買う時になって上司が「特急列車に乗って帰ろう」と言い出した。乗車時間はそれほど長く無く、自分一人の時にはいつも普通電車に乗っており、わざわざ追加料金を出して特急に乗ることは無かったし、そもそも出張に関する旅費規定では特急料金は支給されないので自己負担になるはずだ。自分のお金を出して楽を出来るとはいえ、それは少々贅沢ではないのだろうか。 そんな不審そうな私の表情を読み取ったのか、特急に乗り座席についてから上司はこんな話をしてくれた。 普通列車に乗っても確実に座れるかどうか分からない。立ちっ放しだと、次の日に疲れが残るから仕事の効率も良くない。それなら少しくらいのお金を出してでも確実に座れる特急の方が楽だし、疲れを翌日に引きずることも無い。それに、座席に座って仕事の続きをしたり本を読んだりすることも出来る。
次のページ
このページを最初にブックマークしてみませんか?
『rabbit2goのブログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く