生産性と効率性

生産性と効率性はビジネスシーン以外でも良く聞く言葉。

ただ、明確な違いは何かと考えるとすぐに言葉が出てこないことに気づいた。

なので今回は生産性と効率性の違いについて、調べてみることにした。

生産性とは
経済学で生産活動に対する生産要素(労働・資本など)の寄与度、あるいは、資源から付加価値を生み出す際の効率の程度のことを指す。

んーなんかWikipediaの説明は毎回日本語が難しい。

自分に語学力がないだけだが笑

要は、生産性を高めるとは、限られた時間の中でより高い成果を出すこと。という認識で良いかと思う。

そして生産性を高めるために、成果へ直結する行動やコア事業にリソースを多く割いて、それ以外へのリソースを減らすことが大切になる。

わかりやすくなってきた。

続いて、効率性について
経済学において、効率性とは資源・財の配分について無駄のないことを意味する

生産性との違いを考えると、業務に対して無駄を省くことであり、より低コストで行うこと。

生産性を高めるために、コア事業へ多くのリソースを割く必要がある。

そのために、無駄なことを省き、無駄な資金を抑えてコア事業へリソースを最大化させることで高い成果を出すことに繋がる。

改めて、生産性と効率性について調べることで明確な違いと意識の仕方がはっきりできた。

次回は、具体的な生産性向上のために何ができるのか
効率性を高めるために何ができるのか
この2つについて調べていき、日々の行動に落とし込んで高い成果を出せるようにしていく。

DDD ドメイン駆動設計

新サービスの開発を言語PHPフレームワークLaravel、開発手法DDD(ドメイン駆動設計)となった。

PHPとLaravel共に、今まで開発経験がないため、勉強をしていかなければならない。


ただ、すでに一つでも言語を学んで開発経験があるのであれば、学習コストは低いと言われている。

参考書やQiitaを見ながら基礎を固めていけば問題ないような感覚はある。

しかし、問題はDDDだ。

上司からDDDについての概要に説明をしてもらったが、はっきりいって全く理解が及ばなかった。

本気で難しすぎる。。。

まあだけど、理解しないことには開発ができないので学ぶ必要がある。

一つずつ紐解いていって理解を深めたいと思う

DDDとは何か?
調べると様々な言い回しが出てくるか、現段階での個人的な理解を書いておく。

現実世界にある複雑性を理解し、チームで共有認識の言葉を使いシステムを開発していくこと。

抽象的な部分があり、いまいちピンと来ないと思うが、自分の中でも完全に理解がしきれていない。笑

社内にある「実践ドメイン駆動設計」に簡単に目を通したが難しい。ひたすらに。。
中身までは説明ができないので、
DDDにおいて重要なワードを紹介しておきます。
レイヤードアーキテクチャ
UI層、アプリケーション層、ドメイン層、インフラストラクチャ層の4つの層から構成されている。
ポイント:「ドメイン層は他の層に依存をしてはならない」
ドメインロジックと、それ以外を切り離しすのが目的

ユビキタス言語
チーム全員で共有認識を持つ言葉のこと。人によって言葉の意味が変化してはならない。
その言葉の背景を理解し、今使われている言葉の意味を理解することが重要。

あまりもがっつりした概要でDDDが何なのか伝わっていないが気がする。
ただ文字化することで自分の理解につながるので、理解が深まったら更新していきたいと思う。


アジャイル開発における、インセプションデッキの構成

インセプションデッキとは。
プロジェクトの全体像を端的に伝えるためのドキュメントのこと。

つまり、プロジェクトに関する基本的な取り決めのこと。
プロジェクトマネージャーよりも上級の管理者によって作成される。
1. プロジェクト概要(目標、成果物)
2. プロジェクトの背景(背景となるビジネスニーズ)
3.プロジェクトの目的と妥当性(投資効果)
4.プロジェクト要求事項(ステークホルダーの要求事項)
5.プロジェクト環境(前提条件、制約条件、関連部門)
6.プロジェクト・スケジュール(暫定マイルストーン、完了期限)
7.プロジェクトの資源(体制、予算)
8.プロジェクトマネジメント基本方針

これだけのことをプロジェクト開始前に決める必要がある。
内容が疎かになってしまうと、プロジェクトはうまく行かないことがあるそうだ。

しかし、この内容をチームメンバーに共有をしても完全に理解することは難しい。
ここで認識のズレが少なからず発生してしまう。

それに対して、アジャイル開発ではコミュニケーションい重きを置いていて、インセプションデッキを用いて、プロジェクトへの期待をマネジメントしていく。

ここからがインセプションデッキの構成になる。

インセプションデッキは10個の質問と答えからなる。
1.我々はなぜここにいるのか?
2.エレベーターピッチを作る
3.パッケージデザインを作る
4.やらないことリストを作る
5.ご近所さんを探せ
6.解決案を描く
7.夜も眠れなくなるような問題派なんだろう?
8.期間を見極める
9.何を諦めるかをはっきりさせる
10.何がどれだけ必要なのか

1.我々はなぜここにいるのか?
これから始まるプロジェクトは何のためにあるのか、我々チームは何を解決するのか。に対しての質問に簡潔な答えを用意する。

2.エレベーターピッチを作る
エレベーターピッチとは、たまたまエレベーターに同乗したベンチャーキャピタルの関係者に対して、自分の事業をエレベーターに乗っている30秒間で説明しても資金提供を得られるような、簡潔に事業の魅力を伝えることのできるプレゼン。
余計な内容を入れずに、端的にプロダクトの本質を表すプレゼン内容を考える。

3.パッケージデザインを作る
プロダクトのパッケージデザインを作る。

4.やらないことリストを作る
「やること」「やらないこと」「あとで決めること」の三項目に分類する。プロジェクトにおいて何をやるべきかが明確になる。今決められないことは「あとで決めること」に分類して、今検討することはしない。

5.ご近所さんを探せ
チーム外のプロジェクト関係者に会って信頼関係を築く。

6.解決案を描く
プロジェクトが解決するべき問題の解決策を図に描く。具体的に、プロジェクトで使用するツールやアーキテクチャを図にして検討する。

7.夜も眠れなくなるような問題は何だろう?
プロジェクトにおいて、重要な問題を考える。資金の問題、スクジュールの問題、チームメンバーの問題など、リスクは早い段階で潰してく。

8.期限を見極める
大雑把なスケジュールの予測を立てる。

9.何を諦めるのかをはっきりさせる
プロジェクトには、時間、予算、品質、スコープ(タスク)などの要件が複数あるが、、それらの優先度を決める。

10.何がどれだけ必要なのか
ここまででプロジェクトのことは、大体わかるようになる。ここではやるべきことは。
チームメンバにどういう人が必要かどうか。
何に対して時間がどれだけ必要か
資金が何に対してどれだけ必要か

上記を見積もる

インセプションデッキを見てみると、個人的には、アジャイル開発以外の面でも取り入れられる要素があるように感じる。
何をかプロジェクトや活動をする際に、インセプションデッキを活用して基本的な取り決めを決めてみるよ良いかもしれない

アジャイル開発

新サービスの開発に向けて、チームの生産性を高めるためにアジャイル開発をすることになった。

今回はアジャイル開発の概要についてざっくり書いていく。

アジャイル開発とは、
「ソフトウェア開発のプロジェクトの進め方の一つ。短期間で開発を見直す手法のこと。」

なぜ、アジャイル開発を取り入れることになったのか?
ベンチャー企業のため、開発チームは15人程度(インターン生も含めて)。

フロントエンド、バックエンド、iOSと3つのチームに分かれている。

そのため、マネージメントもデザインも開発もテストもする。チーム全体で開発していく必要あるから。

前置きはこの辺りで、アジャイル開発とは何なのかを書いていく。

押さえておきたいポイントが6つある。

1. 大きな問題は、できるだけ小さな問題にする ⇨小さな問題に分割していくことで短期間での開発を可能にする。やるべきことが具体的になる。

2. 本当に大事なことに集中し、それ以外のことは忘れる ⇨ユーザーにとって価値のあるもののみに焦点を絞る。無駄な開発は一切省くことで短期間での開発が可能になる。

3. ちゃんと動くソフトウェアを届ける ⇨クライアントには確実に動くソフトウェアを届ける必要がある。そのためテストはこまめに実施していかなければならない。

4. フィードバックを受ける ⇨定期的にフィードバックを受けずに、本当に求めているものを開発することはできない。

5. 必要であれば進路を変える。 ⇨現在の計画を乱すような現実が起きた場合は、現実を変えることはできない。計画を柔軟に変化させ対応していく必要がある。

6. 成果責任を果たす。 ⇨仕事の質に責任を持つ。スケジュールを守る。クライアントの期待をマネジメントする。身銭を切るかのようにクライアントのお金を使わなければならない。

この6つのポイントを、まずは押さえておく必要がある。

アジャイル開発をする上での理想は、
チームはリモートよりも同じ空間で仕事をするのが良い。チームの意思疎通がしやすいから。遠隔地にいても、テレビ会議のシステムを使ってコミュニケーションを多めにとる必要がある。

アジャイル開発の進め方。
ストリーボード、リリースボード、ベロシティとバーンダウンチャート、インセプションデッキを可視化して、全員が共有認識を持って進めていく。

ストリーボードとは
ソフトウェアにおいてユーザーが行うストーリーの一覧を可視化するボード

リリースボード
チームがどれだけストリーボードを完成させているのかを可視化するボード

ベロシティとは
一回のイテレーション(開発サイクルの単位、1週間から4週間で設定される)でチームが完了できるストリーの量。つまり開発速度

バーンダウンチャートとは
進捗のチャート。縦軸が作業量。横軸が時間。開発が進むにつれ右肩下がりのチャートとなる

インセプションデッキ
プロジェクトの全体像を端的に伝えるための全体像

最も重要だと感じたのが、インセプションデッキ。
プロジェクトを始める前にこれだけのことを明確化しておかないと、いい加減にプロジェクトが立ち上がり、そのままプロジェクトが進んでしまう危険性がある。

今回はアジャイル開発のポイントだけになっているが、今後実際に開発が進んでいって理解が深まったことも書いていこうと思う。

ブログの方向性

このブログの方向性について決めました。

日々の業務のアウトプットと興味のあることを書いていきます!

実は3ヶ月ほど前にwebエンジニアへと転職をしました!

それからの日々は毎日新しい知識が増えていく一方でインプットができててアウトプットが全くできていなかったです。

転職してから3ヶ月が立ち、ふと自分の成長具合を確かめました。

正直rubyrailsの知識が相当増えましたね。

転職前は自分で考えたマッチングアプリケーションを作成してはいましたが、動けばそれが正解だと思っていました。

ただ、現場では処理速度だったり、可読性だったりと、ただ動くだけのアプリケーションは作らないことを学びました。

当然のことではあるけれど、最初は本当に業務としてwebエンジニアをやっていけるのか不安になりました。。。

焦ってruby についての基礎を1から勉強をし直し、オブジェクト思考については以前よりは理解が深まったと思います。

ただ、この時点でわかるようになんとなく成長した気がしているだけで可視化できるものが何もないなと気づきました。

なので今後は日々の業務から学んだことのアウトプットとして、ブログの記事を書いていこうと思います。

そしてここで自分が学んだことをまとめることで理解が深まります。

さらにさらにチームのエンジニアへも共有をしていくと。

良い事だらけなことに気づきました!

現在はrubyrailsではなく次の新サービスの開発言語であるphpネタとフレームワークのLaravelについてが多くなると思います!

さらに、新サービスがDDD(ドメイン駆動設計)という、かなり難しい開発手法で進めることになりそっちのネタも書いていければと思います。

よろしくお願いします!

何がしたいのかわからなくなる瞬間。

昨日はブログの投稿をし忘れました。


何だか1日何をすれば良いのかわからず。。


今もそんな感じで今の自分は何がしたいのかわからない。


考えていてもわからないんだから、考えるのはやめよう。


今は必死に生きることが一番大事。


でも、ただ必死に生きるのではなくどうなりたいかを意識した上で必死に生きる。


そのどうなりたいかを見つけることが、大事。


今の自分は精神的に自由になれていない。


自分の力だけで食べていけるほどのスキルもないからだ。


精神的に自由になるためには、食べていく為のスキルが必要。


そのためにプログラミングを学んでいる。


つまり、今やることがプログラミングを学ぶこと。


それに尽きる。


よし、頭の中がスッキリした。


学びを続けよう。

オリジナルサービス「sense」

「sense」オリジナルサービスを考えました。


構想は全然固まっていないです。


なのでまずは頭の中を書き出してみます。


わかりやすくするために、これ以降はsense=センスで統一します。


「センス」とは

センスとは、ラテン語の「sentīre」という単語が語源になっていてこれは、「感じる」を意味する。 英単語として「sense 」と言った場合は「感覚」「人間の五感のうち1つ(味覚、聴覚、触覚、嗅覚、視覚)」「物事の見方や考え方」「感じ方」「意義」「意見」「意識」などを意味する。

あの人はセンスがいいね。服のセンスがいい。センスあるね。とか


日常的によく耳にする言葉だと思います。


ただ、なぜセンスがいいかと言われると、ほとんどの人が明確な理由は答えられないと思います。


それでも、センスがいいは感覚として感じるものでもあります。


そのセンスを楽しもう。そんなサービスを考えています。


いたってシンプルなのを考えていて、タイトルと画像(または動画や文字をいいかも)を投稿し共有するだけ。


画像を説明するものは、唯一タイトルのみ。


そこから感じる物は千差万別だと思います。


感じたことは、投稿へのコメントができるようにします。


あとは、いいねのようなセンスボタンを記録できるようにします。


必要なのは、豊かな想像力だけ。


楽しみ方は人それぞれ。


たくさんの人のセンスを共有して、感覚が磨けるようなサービスを目指します。


ただの、画像共有サービスではなく、センス、つまり何か感じる物があるものを投稿する。


自分の世界観を楽しんでもらいたい。