渡(と)を越す - 宮本武蔵「五輪書」

「五輪書」では例え話が多く使われている。その一つ。

「渡(と)を越す」とは、海を渡り四十里(160km)・五十里(200km)にも達する長い海路を越えること。
そうした難所を乗り切ることを「渡(と)」という。

続きを読む

The Day of the Jackal 1-2

前回

1-2-1

The sun had dropped at last behind the palace wall, and long shadows rippled across the courtyard bringing a welcome relief. Even at 7 in the evening of the hottest day of the year the temperature was still twenty-five degrees centigrade. Across the sweltering city the Parisians piled querulous wives and yelling children into cars and trains to leave for the weekend in the country. It was August 22, 1962, the day a few men waiting beyond the city boundaries had decided that the President, General Charles de Gaulle, should die.

ようやく太陽がエリゼ宮の高い塀のかなたに姿を隠し、長い影が前庭をおおって、安らぎの時間をもたらした。その夏最高の暑さを記録したその日は、夜7時になっても水銀柱はまだ23℃を示していた。むせかえるような街々では、パリっ子たちが、週末を田舎で過そうと、不平たらたらの女房やわめき散らす子供たちを、車や列車に押し込んで、陸続とくりだしていった。1962年8月22日、パリ郊外で待機していた一群の男たちは、この日、フランス第五共和国大統領、シャルル・ドゴール将軍は死すべきだ、と結論を下していた。 

1-2-2

While the city’s population prepared to flee the heat for the relative cool of the rivers and beaches, the cabinet meeting behind the ornate façade of the Elysée Palace continued. Across the tan gravel of the front courtyard, now cooling in welcome shadow, sixteen black Citroen DS sedans were drawn up nose to tail, forming a circle round three-quarters of the area.

パリっ子たちが河や海浜の涼味を求めて街の熱気をのがれる準備をしているころ、エリゼ宮の華麗な正面の奥では、延々と閣議が続いていた。ようやくおとずれた黄昏の翳りに熱気の衰えはじめた、褐色の砂利を敷きつめた前庭に、十六台の黒塗りのシトロエンDSサルーンが、じゅずつなぎに円を描いて停っていた。

1-2-3

The drivers, lurking in the deepest shade close to the west wall where the shadows had arrived first, exchanged the inconsequential banter of those who spend most of their working days waiting on their masters’ whims.

いちばんはじめに夕闇のおとずれた西側の塀の、濃い影のなかに身をひそめた運転手たちは、気ままなご主人を待つことが仕事の大部分で、例によってたわいのない雑談にふけっていた。

1-2-4

There was more desultory grumbling at the unusual length of the Cabinet’s deliberations, until a moment before 7:30 a chained and bemedalled usher appeared behind the plate glass doors at the top of the six steps of the palace and gestured towards the guards. Among the drivers, half-smoked Gauloises were dropped and ground into the gravel. The security men and guards stiffened in their boxes beside the front gate and the massive iron grilles were swung open.

閣議はいつになく長時間続き、出席者たちがたいして意味のないおしゃべりを切りあげたのは、午後7:30少し前で、黄金色の鎖と勲章で制服を飾りたてた案内人が正面玄関のガラス戸の向うに姿を現し、警備隊員たちに合図をおくった。運転手たちは、吸いかけのタバコを砂利に投げ捨て、靴で踏みにじった。正面わきのボックスに詰めている保安隊員と警備隊員が身じまいを正し、大きな鉄格子の門扉を左右に開いた。

1-2-5

The chauffeurs were at the wheels of their limousines when the first group of ministers appeared behind the plate glass. The usher opened the doors and the members of the Cabinet straggled down the steps exchanging a few last-minute wishes for a restful weekend. In order of precedence the sedans eased up to the base of the steps, the usher opened the rear door with a bow, the Ministers climbed into their respective cars and were driven away past the salutes of the Garde Républicaine and out into Faubourg Saint Honoré.

運転手たちはそれぞれ運転席に乗り込んだ。大臣たちの一群が、正面玄関のガラス戸の背後に現れた。案内人がドアを開き、大臣たちは週末の休暇のことなどを楽しそうに語らいながら、玄関前の階段をにぎやかに降りてきた。席次の順に、それぞれのDSサルーンがつぎつぎに階段の下に横づけになり、案内人がうやうやしく一礼して後部のドアを開く。大臣たちは順次、自分の公用車に乗り込み、警備隊員の敬礼におくられて、フォーブール・サン・トノレ通りへ消えていった。

1-2-6

Within ten minutes they were gone. Two long black DS 19 Citroens remained in the yard, and each slowly cruised to the base of the steps. The first, flying the pennant of the President of the French Republic, was driven by François Marroux, a police driver from the training and headquarters camp of the Gendarmerie Nationale at Satory. His silent temperament had kept him apart from the joking of the ministerial drivers in the courtyard; his ice-cold nerves and ability to drive fast and safely kept him de Gaulle’s personal driver. Apart from Marroux, the car was empty. Behind it the second DS 19 was also driven by a gendarme from Satory.

10分後には、大臣はもはや1人も残っていなかった。前庭に残っていた2台のDS19シトロエンが、ゆっくり階段の下に寄ってきた。大統領旗をひるがえした1台目の大型車を運転しているのは、フランシス・マルーという警察官である。彼はパリ郊外のサトリにある警備隊本部兼訓練所から派遣されたベテランだった。寡黙な性質で、大臣公用車の運転手たちの陽気なおしゃべりにも加わらなかった。その氷のように冷静な神経と、慎重にして果断な運転技術は、大統領付きの運転手として必須の条件であった。車内にはマルーをのぞいてだれもいなかった。二台目のDS19の運転手もやはり、サトリから派遣された警察官だった。

The Day of the Jackal 1-1

1-1-1

It is cold at 6:40 in the morning of a March day in Paris, and seems even colder when a man is about to be executed by firing squad. At that hour on March 11, 1963, in the main courtyard of the Fort d’Ivry a French Air Force colonel stood before a stake driven into the chilly gravel as his hands were bound behind the post, and stared with slowly diminishing disbelief at the squad of soldiers facing him twenty metres away.

午前6時40分、3月のパリはまだ寒い。いましも1人の男が銃殺刑に処せられようとしていた。早朝の寒気が、心なしか、よりいっそう厳しいものに思われた。1963年3月11日のその時刻、イブリ基地の営庭で、1人のフランス空軍中佐が、凍てついた地面に打ち込まれた杭に、後ろ手に縛りつけられ、20メートル前方に整列した銃殺隊の兵士たちを、徐々にたかまる不信の念をその顔に滲ませながら、凝視していた。

1-1-2

A foot scuffed the grit, a tiny release from tension, as the blindfold was wrapped around the eyes of Lieutenant-Colonel Jean-Marie Bastien-Thiry, age thirty-five, blotting out the light for the last time. The mumbling of the priest was a helpless counterpoint to the crackling of twenty rifle bolts as the soldiers charged and cocked their carbines.

砂利を踏む足音が、かすかにその場の緊張を破った。ジャン゠マリ・バスチャン゠チリ中佐の顔に目隠しの布が巻きつけられ、この世の光をついに遮断した。二十名の銃殺隊員がカービン銃に実弾をこめて、遊底を引いた。その乾いた金属音は、神父のつぶやくような祈りの声を、いっそう無力なものに思わせた。

1-1-3

Beyond the walls a Berliet truck blared for passage as some smaller vehicle crossed its path towards the centre of the city; the sound died away, masking the “Take your aim” order from the officer in charge of the squad. The crash of rifle fire, when it came, caused no ripple on the surface of the waking city, other than to send a flutter of pigeons skyward for a few moments. The single “whack” seconds later of the coup de grâce was lost in the rising din of traffic from beyond the walls.

塀の外で、大型トラックが、その進路を横ぎって市の中心部へ向う車を、クラクションを鳴らしてどなりつけた。そのけたたましい音が、銃殺隊指揮官の「照準!」という号令を押し包んで、消えていった。やがて銃声がとどろいたが、ようやく目覚めかけた街の表面にはさざ波ひとつ立たず、ただ一群の鳩があわただしく羽音をひびかせて、ほんの数分、空に舞っただけであった。数秒後にひびいたとどめの一撃も、塀の外からなだれこんでくる車の騒音にかき消された。

1-1-4

The death of the officer, leader of a gang of Secret Army Organisation killers who had sought to shoot the President of France, was to have been an end—an end to further attempts on the President’s life. By a quirk of fate it marked a beginning, and to explain why, it is first necessary to explain why a riddled body came to hang from its ropes in the courtyard of the military prison outside Paris on that March morning...

フランスの大統領の殺害をはかったOAS(Organisation Armée Secréte《秘密軍事組織》)暗殺団のリーダー、チリー中佐の刑死は、さらなる陰謀に終止符を打つものと期待されていたが、運命の気まぐれか、それは一つの始まりをしるすことになった。何ゆえに?その謎を解き明かすには、この三月の朝、パリ郊外の軍刑務所の庭で、一佐官が銃殺刑に処せられるまでの経緯をまず説明しなくてはならない…

【英語】オフショアWEB開発でよく使う英語表現・実際の会話例

2015年6月からベトナム・ホーチミン市にて、オフショア開発(web)のPMとして働いています。 ベトナム人開発者に仕様を伝え、開発を管理し進める仕事です。

コミュニケーション手段は

  • redmineなど文章は全て英語で記載する
  • 対面も、英語で話して伝える
  • 複雑な内容のみ、ベトナム人通訳スタッフ(日本語<->ベトナム語)に伝えてもらう

というスタイルで、可能な限り英語で仕事を進めています。

今回は、Web開発で使う英語を知りたいという人向けに記事を書きます。

  1. 毎日の業務でよく使っている表現を、思いつく限りまとめてみました。
    これらの表現できちんと通じて仕事が進んでいるので、一応実戦的なオフショア開発の英語になると思います。

  2. 開発シーンでの実際の英語のやりとりを書きおこしてみました。
    参考になれば幸いです!

1. 開発でよく使う英語表現

specification

仕様。specとも略される。 システムがどのように作られるべきかを定義、規定したもの

  • spec document 仕様書
  • The specification is complicated(complexed). 仕様が複雑だ。

implement

実装する。 仕様が決まった上で、それに沿って「作り上げる」という意味合い。

  • Please implement this function. この機能を実装してください。
  • Do you understand how to implement? 実装のイメージはついていますか?

design

設計する。designの1単語だけだと設計という意味が伝わらないので、後ろに目的語を付ける

  • design DB scheme DB設計する(直訳だとデータベーススキーマをデザインする)
  • design classes and methods クラスやメソッドの設計をする

architecture も設計という意味だが、それに加え「そのように設計された思想・理念」という意味も含む。設計思想。アーキテクチャ。

execute

実行する。ターミナルで打ち込むコマンド、SQL文、バッチなど何にでも使える。

  • Chef-solo will be executed in the server. chef soloがサーバーで実行される
  • I executed SQL to the production DB. 本番DBに対してSQLを実行しました

wrap

システム(APIなど)が別のシステムの受け口となっている。ラップしている。

  • The API wraps the search engine, so you don't have to understand how the search engine works precisely, you can just concentrate on how you use API.
  • APIが検索エンジンをラップしているので、検索エンジンの細かい挙動について完全に理解する必要はありません、APIを(仕様通りに)使うことに集中してください。

take time

(問題を解決するのに)時間がかかる。

  • I took time to introduce capistrano. capistranoを導入するのに時間がかかりました。

solve

(問題を)解決する

  • I took time to solve the issue(problem). 問題を解決するのに時間がかかりました。

see

システムがDBなどを見ている、そちらに向いている

  • This app sees staging DB, not production DB. このアプリは本番DBではなくステージングDBを向いています。

〜 so that S can V

SがVできるように〜する
この構文はかなり使える。

  • Please fix so that the number of items is displayed correctly. 商品の数が正しく表示されるよう、修正してください。
  • Please update wiki so that every developer can understand the spec of the system. 開発者全員がシステムの仕様を把握できるよう、wikiを更新してください。

work

システムが想定された通りに正しく動く。

  • I deployed to staging environment, but it's not working. Please check.
  • ステージング環境にデプロイしたけど正しく動いていません。確認お願いします。

make sure

(念のため、きちんと)確かめる。
システムのテストのときによく使われる。

  • Please make sure that it works in the staging server. ステージング環境で正しく動くことをきちんと確かめて下さい。

want 人 to V

人にVして欲しい。
この構文もよく使う。
would like (= want) で、マイルドにした言い方になる。

  • I want him to solve this problem. 彼にこの問題を解決して欲しい。
  • I would like you to understand the spec. あなたに、仕様をきちんと理解してほしい。

2. 実録:開発シーンでのやりとり

最後に、開発での実際のやりとりがどんなものなのか、書きたいと思います。

状況

  • ECサイトの管理画面、csvファイルの商品アップロード機能を開発中
  • 商品追加でDBのトランザクションが使われているが、トランザクション中に実行されるクエリが多すぎてテーブルロックがかかり、DBが重いという問題がおきている
  • サーバータイムアウトが発生し、アップロードに失敗する状況
  • その解決方法についてskypeで話し合っている

Aさん(日本人PM)の発言

I think too many queries are executed in one transaction.
I think transaction should be used like this:

BEGIN
only 2 or 3 queries
COMMIT or ROLLBACK

to avoid the lock in DB for a long time but we don't have enough time to fix all...

B-san, please tell me your opinion about this issue.

(和訳)

1つのトランザクションでクエリの実行数が多すぎると思います。
トランザクションはこのように使われるべきだと思います:

BEGIN
2つか3つのクエリ
COMMIT か ROLLBACK

DBで長時間のロックが発生しないようにするためです
でもこれを全部直す時間はないですね...

Bさん、この件について意見を聞かせてください。

Bさん(ベトナム人開発者)の返信

For Big Task vs Server Performance - issue, generally there are 2 approaches:

  1. Split the work into small parts
  2. Put the task into background process, and report the result asynchronously with the call.
  3. Increase hardward configuration (timeout, memory, cpu..) <--- worst case, not use.
大きなタスク vs サーバーパフォーマンスの問題は、概して2つのアプローチがあります:

1. タスクを小さなパーツに分割する
2. タスクをバックグラウンドプロセスとして実行し、終了したら結果を非同期に通知する
3. ハードウェアの設定をあげる(タイムアウト、メモリ、CPUなど) <-- 最悪のケースのみ、使わない

We are thinking on approach 1. Split the work.

a) Split on server:
Like what you said, BEGIN insert 5 products COMMIT
If user insert 100 products, and it failed at product 11, i.e the first 10 products are committed,
we can send back to user the file contain list of 90 products that is not added.
They will update the file and upload those 90 products again.

But this does not solve the 'timeout problem'.
The browser still wait for a long time to see the result, and it will be time out if number of products increase.

我々はアプローチ1をとります。1.タスクを分割する方法です。

方法a) サーバー側で分割する
あなたがさきほど言っていたように、 BEGIN、5つの商品を追加、そしてCOMMITします。
もしユーザーが100商品追加して、11商品目で処理失敗したとき、つまり10商品がコミットされたとき
追加されなかった90商品のリストのファイルをユーザーに送り返せます。
ユーザーはファイルを修正し、再度90商品をアップロードできます。

しかしこの方法では「タイムアウト問題」は解決されません。
ブラウザが結果を長時間待つことは変わりなく、商品数が増えればタイムアウトが起こります。

We need
b) Split on client (browser):
javascript parse the csv file, and split into many parts,

100 products = 20 parts x 5 products.

Javascript will ajax submit each part into server, and get the result instantly for each part.
It will report interactively to user.

For example:
5 products upload successfully
5 products upload failed
5 products upload successfully
5 products upload failed
5 products upload successfully
5 products upload successfully
....

Then finally it let user download the report, will all the failed product, for them to upload again.

我々が必要なのは
方法b) クライアント(ブラウザ)側で分割する です。
JavaScriptでcsvファイルをパースし、多くのパーツに分割します。

100商品 = 20パーツ x 5商品

JavaScriptは各パーツをサーバーへAjaxで送り、各パーツについてすぐに(処理が成功か失敗の)結果を得ます。
結果はすぐにユーザーに通知されます。

例えばこのような表示です:
5商品アップロード成功
5商品アップロード失敗
5商品アップロード成功
5商品アップロード失敗
5商品アップロード成功
5商品アップロード成功
...

最終的にユーザーが失敗した商品をダウンロードできるようにして、再度アップロードできるようにします。

Aさん(日本人PM)からの返信

Plan b) sounds good.
It's also good that we don't have to fix PHP logic of uploading so much.

Would you start implementing in plan b? If you need, you can assign task to me, ○○-san or ○○-san.

方法b) は良さそうですね。
PHP側のアップロードロジックをそんなに修正しなくて済むというのもよいですね。

方法b)で実装を始めてもらえますか?
必要なら、私や○○さん、xxさんにタスクを割り振ってください。

Bさん(ベトナム人開発者)からの返信

Yes, A-san
I'll start implement. I'm preparing the environment

はい、Aさん
実装を開始します。環境の準備をしています。