カンボジアで働いている人の備忘録

24歳、なんかカンボジアで起業したみたいです(他人事)

未経験でWEB関連の仕事に取り掛かった - 2週目経過

とりあえず、サイト回収の件についてはひと段落。「まだまだ直して欲しいところはたくさんあるよー」と言われているけども、キリがいいところで一旦お休みを頂く。

どんな作業をしていたのか

要望その一。

「サイト上にGoogle Mapを設置している。同一住所に複数のマーカーが存在するのに、1つしか表示されていないっていうバグを直して欲しい」

この案件をこなせれば次のお仕事も頼むよ、という私のスキルが足りているかどうかの試金石。設定された納期は環境構築-開発-テスト-実装まで含めて、3週間。プログラミング経験が2年弱あるとはいえ、WEB未経験という私のスキルレベルを考慮して頂いた上での数字である。

手持ちのMacにローカル開発環境を揃えるのに3日、実際にソースコードをいじって開発にあてたのが2日、テストから実装までが1日。フタを開けてみれば1週間弱で完了。既存のJavascriptコードにちょっと足すだけだったのもあり、思ってたより早く終わった感じ。

お次の要望その二。

「データ管理用のページに新しい項目を追加して欲しい」

データベースのテーブルにカラムを追加して、管理ページから更新を掛けられるようにするだけ。2年前に新人研修でMVCモデルについて学んでいたおかげか、これは半日程度で終了。思いの外早めに終わる。Yiiの独自クラスの使い方と、PHPの記法によるエラーで苦しめられた感じ。

単純にユーザーに表示させる内容はビュークラスで、ページ遷移に伴う処理はコントロールクラスで、データベースの定義はモデルクラスで、というポイントをすんなり理解できたおかげか。GETとかPOSTとか、そういう細かいWEBの仕組みは全然分からんけど。

基本的にプログラミング作業の大半はバグ潰し。ついでにこの辺りでApplication.logにエラー発生箇所がバッチリ記録されているということに気づく。なぜかページが表示されない、エラーで返ってくる...というようなエラー退治の時間が大幅に短縮された。

ひとまず最後の要望その三。

「管理用ページに既存データコピー機能があるんだけど、一部がコピーされない仕様になっている。全部一気にコピーできるようにして欲しい」

今までの中で一番難易度が高め。先ほどの改修に比べると広範囲のデータに影響が及ぶため、いろんな意味でちょっと怖い。

ちなみに現状の仕様は以下の通り。いちデータをコピーするだけで結構な手間が掛かるのが問題らしい。

  1. コピーボタンを押す
  2. コピーされたデータを編集
  3. 保存ボタンを押す。データ登録(親ID発行)
  4. コピーしきれなかった他情報を手動で追加編集(親IDを元に子レコード更新)
  5. 保存ボタンを押す。データ更新

ソースコードやテーブル定義を見ていると、テーブルAのキーを元に他テーブルの更新を掛けに行く、という一対多の関係であることが判明。そして現状でコピーしきれない「一部のデータ」というのが、この子レコードのこと。

親レコードにデータが登録されたタイミングで自動的にIDが発行されるのだが、このIDが発行されないと子レコードの登録が行えない。その辺のことを考えて、現状の手間のかかる手順を踏むようになったのかなと推測。

いろいろ考えた結果、一番楽そうな方法で修正することにした。現状の振る舞いを変更。

  1. コピーボタンを押す。データ登録(親ID発行し、親IDを元に子レコードを自動更新)
  2. 後は適当に追加編集してもらう

最初にコピーボタンを押した時点で新規データとして自動的に登録し、プログラム側で子レコードの更新まで行うという仕様に。細かい修正はデータ登録後にしてもらうようにした。

間違えてコピーボタンを押して不要レコードが作成されてしまうかもしれないので、「コピーしてもいいっすか?」と警告するアラートも設置。これも研修で学んだフェールセーフを意識してのこと。

一応機能は実装できたがソースコードが凄い汚くなった。似たような記述をコピペで増殖させて無理やり動かしてる。できればクラスメソッドを使って再利用しつつソースの可読性を保ちたかったのに...やり方が分からん。まぁ動いてるからいいか。あとはバグが出ないことを祈るだけ。

WEB未経験でもサイト改修できたよ

まだまだ修正依頼はたくさんあるが、キリのいいところまでしっかり終わらせた。ちゃんとできて良かった。カンボジアを観光するという目的もあるので、ひとまずはお仕事を休止。

やってみたら案外なんとかなるもんだなぁ。自分で驚いた。最初はできるかどうかなんか分からなかったし。ていうか日本でプログラマ辞めてカンボジアに来て、またプログラミングしてるとかこれもう分かんねぇな。まあいいか。常識の範囲内で使えるモノは何でも活かそうの精神。

しばらくは土日のディナータイムはBelloで働いて、プノンペンをぶらぶらしつつ、時間があればシェムリアップ、タイ、ベトナム辺りでも観光しようかな。近いし。

それと今回の仕事でGoogle Map周りの使い方がある程度分かったので、BelloのサイトをGoogle Map対応にしてみた。以前店に来ていた欧米系のおっちゃんが「FacebookもTripAdviserも地図が間違ってたんだよ!見つけんのに40分も掛かったんだ」という言っていたのがきっかけ。

trattoriabello.info

ブログサイトを無理やり企業ページっぽくしているせいか、ちょっと地図の表示が遅いのが気になる。その代わり地図アプリ呼び出しリンクも付けたし、スマホ表示からの経路案内もバッチリ。やったぜ。