革命のブログ

フレボワークスの社員がブログを通じて情報発信します。

DBのバージョン管理で苦労しないために

どうも、小野です。

今回は、開発で意外と問題になってくるDBのバージョン管理についてのお話です。

みなさんは、どのように管理していますか? DBは開発工程前に予め設計するのですが、やはり変更はつきものです。 しかもDBはアプリケーションの核になっているので、構成が変わるとエラーが発生したり、随時更新していかないと環境によって構成が異なったりします。

私も周知漏れなどで、自分のところでは動くけど、他の環境では動かないなどは日常茶飯事でした。 ちゃんと管理しろって話ですが、エンジニアの人数も少なかったので、管理コストに比べたら、トライアルアンドエラーの方が良かったりします(汗 ただし、エラーログに「〜の列が見つかりません。」のような、エラーのトレースができることが前提ですね。

現状の管理方法における問題点を挙げ、改善方法についてお話します。

続きを読む

Trelloによるプロジェクト管理

アジアカップもW杯のような盛り上がりを見せて欲しいと思っている、小野です。

プロジェクトを進めていく中で、プロジェクト(タスク)管理は必要になってきます。 管理方法については、十人十色で企業によってやり方は異なります。弊社ではタスク管理方法にTrello(トレロ)を採用しています。

今回は、Trelloを使ったタスク管理方法についてご紹介したいと思います。

trello.com

Trelloを採用した理由

無料で利用できるWebサービスなので、サーバ管理も不要です。Googleアカウントを持っていれば、アカウント登録が簡単です。

Trelloを採用したのは、以下の理由が挙げられます。

  • 操作が直感的で使いやすい、わかりやすい
  • メンバーのタスクが把握しやすい
  • アドオン、Chrome拡張機能によるカスタマイズ性が高い

今までにRedmineを使いましたが、Trelloに比べ入力項目が多く、タスクの更新を行うための手順が多いので途中で断念しました。 進捗を変更するだけでも、詳細を開いて、進捗を変更して、保存といった操作が必要です。 Trelloであれば、ドラッグ&ドロップのみで変更できます。

ボードを作成する

ボードはプロジェクト単位で作成するのが管理しやすいです。(〜アプリ開発など)

ボード作成
ボード作成

作成する際に、ボード名と公開範囲を決めます。作成するとホーム画面にボードが表示されます。

リストを用意する

作成したボードを開いて、リストを以下の5つ用意します。このリストで進捗を管理します。

  • Pending(保留、やるかも)
  • Todo(やること)
  • Doing(仕掛中)
  • Done(完了)
  • Review(確認)

進捗管理リスト
進捗管理リスト

横スクロールの必要がない範囲で収めると使いやすくなると思います。 ちなみに今使っている端末はMacbookAirの13インチで、解像度は1440×900です。

Pending

やるかどうかわからないタスクや、今作業するタイミングではないタスクなどを置きます。 定期的に棚卸ししていかないと、溜まっていくので注意が必要です。

Todo

やるべきタスクを置きます。新たにカードを作成するときはここに作成します。

Doing

作業中のタスクを置きます。 担当者がTodoからDoingにカードを移して、作業を開始します。

Done

担当者が作業を完了したら置きます。

Review

第三者への確認が必要なタスクを置きます。 アプリケーションの動作確認やレビューなどです。

タスクを作成する

まずはタスク名と後述するラベルだけ設定しておきます。 他に必要があれば、タスクの詳細、担当するメンバー、期限などを設定します。

タスク作成
タスク作成

タスクの優先順位の付け方

タスクを行う際の優先順位はカードの並び順で設定します。 以下の図のように、上が高く下が低いとイメージです。

優先順位
優先順位

ラベルでリリースバージョンを管理

同じプロジェクトでも、タスクによってリリースするバージョンが異なる場合があります。その場合にラベルを使います。 Trelloのフィルタリング機能によるラベルの絞り込みができるので、特定バージョンのカードのみを表示することも可能です。

ボード上に表示されるのは、ラベルの色のみなので、その色がどのバージョンなのかわかりづらいです。 そこで後述するプラグインを利用することで、ラベル名も表示できるようになります。 以下の画像は、Chrome拡張機能を追加した場合のものです。

ラベルによるバージョン管理
ラベルによるバージョン管理

実際のカードの流れ

  1. Todoにタスク(カード)を作成します。
  2. 担当者はTodoからDoingにカードを移動し、作業に取り掛かります。
  3. 作業が完了したら、Doneにカードを移動します。(タスクの内容によっては、Reviewに移動することもあります)
  4. 開発環境(サーバ)へのデプロイなどを行い、Reviewにカードを移動します。
  5. 確認で問題がなければ、カードをアーカイブし、問題があればTodoに移動する。

カードを移動する際にメンバーをアサインすると、担当者にデスクトップ通知されるので気付きやすくなります。

おすすめの拡張機能

前にも申し上げましたが、Trelloはアドオンを追加できます。ただし、無料アカウントの場合だと、1つのアドオンまでしか追加できません。 2つ以上利用したい場合は、有料アカウントになる必要があります。

ChromeでもTrello向けの拡張機能がありますので、2つほどご紹介します。

カードにラベル名称を表示します。

カードにNoを表示します。 Gitのブランチ名などにカードNoを入れてあげると、カードとソースバージョンの紐付けが行いやすくなります。

おわりに

弊社で行なっているTrelloを使ったタスク管理方法は一例に過ぎません。大事なのは、自分たちにとって最適な手法を見つけることです。 ぜひ、タスク管理にTrelloを採用してみてはいかがでしょうか?

JJUG CCC 2018 Fallに参加してきました

www.java-users.jp

どうも、小野です。

先日、JJUG(Japan Java User Group)が主催するJJUG CCC 2018 Fallに参加してきました。 今回はその様子をお伝えしていきます。 本記事では、セッションの内容は書きません。内容について知りたい方は、 記事の最後のリンクを確認してください。

写真を全くと言っていいほど、撮っていないのでイメージしにくいとは思いますが、 予めご了承くださいm( )m

(余談ですが、イベント名にFallとありますが、時期的にWinterですね。)

開催場所は新宿ベルサールグランドカンファレンスセンターでした。 JR新宿駅西口から徒歩15分程度とちょっと遠いんですね。

JJUG CCCの特徴

スタッフがボランティア

他の企業主催のイベントはわかりませんが、JJUGのイベントは100%ボランティアスタッフです。 ボランティアスタッフのみなさんには本当に感謝しています。

託児所があります

お子さんがいる家庭で、休日のイベント参加は難しいものがあります。 なんと、本イベントでは託児所が設けられています。 安心して子連れで参加できますね。 次回、参加する機会があったら利用したいと思います。

参加費無料

コミュニティ主催でありながら、参加費が無料です。 しかも、ランチセッションに参加すると、お弁当も配布されます。 場所代、お弁当代だけ考えても結構な金額いくと思いますが、 そこを無料でやっていただけるのはとても助かるし、感謝しています。 ただし、全てのセッション後は懇親会があるのですが、これに参加する場合は1000円かかります。 でも、1000円以上の価値はありましたね。 料理は、LINEの恒例?の寿司が提供されていたみたいです。LINE DEVELOPER DAYでもありました。 (残念ながら、私は次の日3時起きだったので参加できませんでした。。。)

受講セッションの内容

Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話(福嶋航)

私も普段AWSを利用しており、身近に感じる内容でした。 ECSについては前々から興味があり、Java、SpringBootでどのように構築されているか興味がありました。

セッションの内容はJavaの内容よりもECSよりの話でした。

あと、今だとFargateが東京リージョンにあるので、なぜ使わないのかなと思っていたのですが、 FargateにはECSに比べコストがかかるというデメリットがため採用しなかったそうです。 確かに、コストがかかるという記事はよく見かけます。

まずはECSから使ってみようと思います。

モジュールグラフが作られる様子を学ぼう(opengl-8080)

よくQiitaでお世話になっているopengl-8080さんのセッションです。

Java9からモジュールシステムの導入により、新たな問題の解決方法を説明してくださいました。 相変わらず、図を使い込みわかりやすい資料でした。 今、業務ではJava8を利用していおり、モジュールシステムについてはモヤっとしか理解していませんが、 今後、Javaのアップデートした際には、本資料を活用したいと思います。

今こそStream API入門(櫻庭 祐一)

Java8から導入されたStream APIですが、個人的に今更感はあったので小ネタでを挟んでくるのかなと期待していましたが、 入門と書いてある通り、初心者向けの内容でした。

業務でStreamAPIを使っているので、既知の内容でしたが、1つだけ勉強になったことがあります。 それは、StreamAPIを使ったことがある人だったら、一度は躓く例外の取り扱いについてです。 登壇者である櫻庭さんの回答は「Either」を利用するといいそうです。

ちなみに私は、Stream処理内でRuntimeExceptionをスローし、Stream処理外でCatchするようにしています。

Java を活用したマイクロサービスのための Kubernetes 活用(寺田佳央)

寺田さんは話の冒頭に、Microsoftに在籍していながらも、自分は「Javaの人間」とアピールしていたのがとても印象的でした。

さて、本セッションは最近注目されているkubernates(K8s)のお話です。

kubernatesはマイクロサービスの管理を楽になるなど得られるメリットは大きいのですが、 その反面、覚えることが多く安易に採用しない方がいいとのことでした。

本番運用での採用は、まだ難しいかもしれないですね。

さいごに

コミュニティ主催であり、お弁当が配布されるなら参加料は有料でもいいのかなと思いました。 無料でここまでやれているのが凄いと思います。

本カンファレンスは、イベント名のとおりJavaを中心とした内容になっています。 初心者から上級者までJavaに興味がある人でしたら楽しめるイベントだと思います。 年に2回開催されているので、興味があったら参加してみてください。

セッションの資料が以下にまとめられています。 興味のある方はぜひ。

github.com

LINE DEVELOPER DAY 2018に参加してきました

f:id:frevo-works:20181122000445j:plain

どうも、小野です。

先日、LINEが主催するエンジニア向けカンファレンス『LINE DEVELOPER DAY 2018』に参加してきました。 過去にも何度か開催されていたのですが、情報収集力が足りず、あったことすら知りませんでした。無念。。 今年の開催に関しては、Twitterでフォロー中の ちょまど(@chomado) さんのツイートを見て知りました。 Twitterは重要ですね。

今年のテーマは「NEXT LINE」です。LINEが次に目指すものは大きく分けて2つあります。

続きを読む

【雑記】水中にも電波が届いたら…

こんにちは。さいとうです。

私の趣味の一つにスキューバダイビングがあります。(もうすぐ一年のブランクになりそうですが…)

PADIというダイビング認定団体の18mまで潜ってもよいライセンスを持っています。

PADI - Wikipedia

続きを読む

マイクロサービス化に悩んでる人へ

どうも、小野です。

以前、参加されていただいたAWS DEV DAYのMicroservicesのセッションを聴いて、
改めてマイクロサービスの有効性や複雑性など再認識させられました。

特に、以下のスライドがとても参考になりました。

www.slideshare.net

今はバスワードとも言える「マイクロサービス」。

マイクロサービスとよく比較されるものとして、モノリシックというアーキテクチャがあります。

モノリシックは1枚岩と表現されるとおり、1つの巨大なシステム(サービス)のことです。
管理対象は1つなので、管理は楽そうではありますが、以下のようなデメリットが挙げられます。

  • プログラム修正時の影響範囲の把握が難しい
  • テストを含むビルドに時間がかかる

これは最終的にリリースサイクルのスピードに関わってきます。

これらを解決するために考えられたのが、マイクロサービスです。

私もマイクロサービスについて勉強し、導入を検討しましたが、結局断念しました。
断念した理由ですが、主に以下の3つが挙げられます。

  • 実装での考慮すべき点が多く、実装コストの増加につながる
  • エンジニアが足りない
  • リリースのスピードが求められていない

当時携わっていたシステムは受託PJだったため、スケジュールも決められており、
実装コストをなるべく抑え、品質を重視する必要があったため、断念せざるを得ませんでした。
その上、人が全然足りず、マイクロサービスをやっていくのは自分の首を締めるだけでした。

本記事ではマイクロサービスの導入によって、どこまでのメリットが得られるか考えながら読んでいただきたいです。

続きを読む

Cybozu Days「楽しいは正義」

f:id:frevo-works:20181109161244j:plain

先日、Cybozu Daysに参加してきました。今年のテーマは「楽しいは正義」。

豪華な感じで、プラットフォーマーとして生きたお金の使い方ですよね。

 

グループウェアのサイボウズさんなので
話題の働き方改革に乗せて共有プラットフォームのセールス話が多いかなと思わせておいて、今年もタメになる内容が多く、プラスのエネルギーをもらえました。
実は去年も参加していて、叶姉妹と青野社長の講演からプラスエネルギーをもらった記憶があります。

 

人の幸せって何?
これを学術的に解明しようとしている教授のお話もタメになりました。

f:id:frevo-works:20181109161321j:plain


環境、健康、心(やってみよう、ありがとう、なんとかなる、ありのままに)が満足すると幸福度が高いようです。


青野社長は社員の話に耳を傾け、経営判断しているのが伝わってきました。組織運営も初めからうまくいっていたわけではなく、昔失敗している(退職者が多い)というのも興味深いですね。

印象に残ったのは、現在の組織運営において「公平性を捨てた」ってところ。
確かに、人により求めていることは違うだろうし、それを受け入れていくと公平ではなくなるので潔いですね。各個人の働き方を尊重して組織運営していくって、リーダもメンバーもすごいですよね。

 

f:id:frevo-works:20181109161351j:plain

あとは、南海キャンディーズの山ちゃん面白かったです。(写真見えないですね・・)
実は、努力家なんですね。
「努力が苦でないレベルまで仕事を昇華できた」って話は大切なことだと思うし、好感が持てました。仕事とはいえ楽しめた方がパフォーマンス高いですよね。

 

 

私もチームビルディングや組織化といった内容は勉強してきて、実践する環境もあったので、どうすれば良いかという経験値を持っていて興味ある分野です。学び初めの頃、一番注意していたのは、周囲に協力してもらうために持っている情報を惜しみなく公開するということ。状況を把握してもらって、主体的に動ける環境を提供するという考え方ですね。実際、期待以上のパフォーマンスを発揮する人が多かったですね。

 

秘密主義だと浅い信頼関係で何かあるとすぐに壊れる危険がありますよね。
「腹をくくって責任を負っている」と言えば、聞こえは良いですが失敗したらみんな不幸になりますからね。

 

サイボウズは自由の中にも企業理念に沿った明確なルールがあり
トップを筆頭に会社全体で高いレベルで取り組めているという、良い会社でした!

 

我々も頑張らないとね!