コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

チームのスキルセットを可視化するスキルマップ/星取表についてざっくりまとめる

星取表でググると相撲の方しか出てこないのでまとめてみる

「スキルマップ」「星取表」とは

チームメンバーのスキルを可視化するもの。

縦軸をチームで扱うスキル名、横軸をメンバー名で批評を作り、個人のスキルを3〜5段階程度でつける。

詳しい作り方は参考リンク参照のこと。

効果

  • チームで行うことで相互の得意不得意が可視化できるのでお互いに何が得意不得意かがわかるようになる
  • 新しいチームメンバーが入った際にも一見してメンバーの能力がわかるようになる
  • チーム内で使おうとしている技術のできるできないが見えるようになるため、メンバーに習得してほしいスキルや、分かる人が少ないスキルの目安にもなる

注意点

  • スキルの内容はプロジェクトによって千差万別なので、そのプロジェクトによってカスタマイズする
  • 人事考課や社内の全体またぎの資料などに使うと、宣言するメンバーが萎縮してしまうのでそのようなものには使わないことをちゃんと宣言し、そうなるように運用する。
  • できるだけアップデートをする、そうすることによりやれることや頼めることが可視化できる

参考リンク

別のものとして「色付き星取表」というものもある

参考書籍

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

2019年はじまったので目標を立てて自分の行動を律する

新年始まりました、あけましておめでとうございます。相も変わらず本ブログはほぼ毎日更新で1日1記事を目指していきます。

年初なので、私の今年の目標などを書いておいておこうかなと思います。

振り返り

まず大きな振り返りとしてこのブログの1日1記事が続いており、割と見られる場に書くと頑張らねばシフトになるという性格なんだなと改めて実感。そこを踏まえて振り返っていく。

  • ほぼ1日1記事ブログはなんとか続いているので継続したい
    • とはいえ、実務でコードを書かないこともあるのでもうちょっと違うアプローチをしたい
    • スライド回顧録はそれに近い取り組み
  • LT登壇できたので調子にのってもっと増やしたい
  • 仕事に忙殺されてプライベートの時間がなかったのでやりたかったことが全然消化できてない。
    • 積本
    • 趣味のプログラミング
    • 英語の勉強
    • etc..
  • チームで開発する知識の拡充が割と迫られているのでそこをしっかりやる

目標とか

年始の目標なので大きく振りかぶります。あと月ごとの振り返りと1Qごとの現在時点確認をしようと思います。

  • ほぼ1日1記事ブログの継続
    • テーマとしてもうちょい拡大して思考フレームワークとか、チーム開発的な知識も取り扱う
    • 去年も書いていたが設計系の話も1月に1記事取り組む
  • 登壇をできれば1Qに1回必ずする
  • 英語の勉強を1月中に何かしら方向性を見つけて2月から何かしら取り組む
  • 平日と朝の時間をしっかり活用できるようなリズムを取り戻す。それを読書タイムなどに充てる。
  • 趣味の開発 / 休息を兼ねてかならず土日はしっかり休めるように業務調整をちゃんとする

参考リンク

2018年の個人アクションざっくり振り返り

2018年最後の一本ということで振り返りテイストでお送りします。この日記は実務と個人を切り離している感じなので、実務のことは繁忙度だけ書いておきますがご愛嬌。

月別サマリ

1月

波乱の幕開け、まだそこまで忙しくなかった。

行った勉強会

2月

ひたすらRailsエンジニア稼業だったけど、DroidKaigiに参加。時流に取り残されないためにカンファレンス行くとコンパクトに摂取できて良いと感じる

行った勉強会

3月

ここらへんから本業の多忙さが本格化、swaggerでAPI仕様書をひたすら書く職人と化す

行った勉強会

4月

期限付き業務が続く。Unityでゲームを作りたいと思うがそんな余裕がない。ほんとはUniteも行きたかったけどここらへんの忙しさから行くのを諦める…

行った勉強会

なし

5月

なにかアウトプットをしよう、とほぼ毎日更新ブログ開始。(1日1記事書こうという宣言 - コード日進月歩)あとカイゼンジャーニーとの出会いで考え方にいい刺激を受ける。

行った勉強会

6月

めちゃくちゃな働き方をしていた月。ただブログは書き続けた。そんな中言った越境ジャーニーはいろいろ刺激を受けた。

行った勉強会

7月

10月リリースの案件に邁進する。割と自分のQiita 記事がいろいろ使われていることに気づく。

行った勉強会

8月

一瞬余裕ができたと見せかけてギリギリな感じが続く。夏休みらしいこと一切してないけれど、ブログは淡々と続いていく。

行った勉強会

なし

9月

たぶんこの月が1月、2月の次に安らいでいた時期だったのかもしれない。

行った勉強会

10月

割と10月まで走りきった案件が一人で開発していたので、それを次につなげるための答え探しを始めてた時期。そしてここから人手足りないモードがフィーバーになる。

そこで技術書典で出会ったセイチョウジャーニーで仕切り直しともっといろいろせねばという決意をする(技術書典5で偶然出会ったセイチョウジャーニーを読んで、仕切り直しをしようと思った話 - コード日進月歩

行った勉強会

11月

9月まで凪だったが忙しさが再燃、年末までに終わらせなければならない案件に奔走することになる。

ただ「その合間でも発表できれば、ちゃんとした登壇できるのでは…?」とブログと同じテンションでLT登壇した(『セイチョウのための一歩 ブログ習慣化のあゆみ』という内容で登壇してきました。 - コード日進月歩

行った勉強会

12月

忙しさの頂点、新規開発中にバグ修正が平行で入るなど過去経験したことない謎めいた進行ながらも年内中に案件を終わらせる。前から手伝うって話をしていたPHPカンファレンスのスタッフしたりもした。

あとその中で実はAdventCalenderを2本投稿。

1個はRuby

qiita.com

もう1個は去年からめっちゃ書きたかったSHIROBAKOアドベントカレンダー

adventar.org

shinkufencer.hateblo.jp

実はSHIROBAKOが人生のターニングになっているんですが、それはまた別の話。

行った勉強会

今年得たもの、できたこと

こう起こすと実りが薄い…

やりたかったけどできなかったこと

  • Unityを使ったモバイルゲーム開発(完全趣味)
  • Web開発における、アーキテクチャの簡単まとめ記事(MVC記事のアーキテクチャ版)
  • エンジニアマネジメントの知識補強
  • 積本の消化(特に「カイゼンジャーニー」「クリーンアーキテクチャ」「エンジニア組織論への招待」「モデルベース要件定義テクニック」「Game Programming Patterns ソフトウェア開発の問題解決メニュー 」あたり

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

Clean Architecture 達人に学ぶソフトウェアの構造と設計

Clean Architecture 達人に学ぶソフトウェアの構造と設計

モデルベース要件定義テクニック

モデルベース要件定義テクニック

Game Programming Patterns ソフトウェア開発の問題解決メニュー (impress top gear)

Game Programming Patterns ソフトウェア開発の問題解決メニュー (impress top gear)

総括

勉強会で「しんくう」で名乗ったりすることを増やしたら、意外とQiitaの記事をご存知のかたが多くて嬉しい場面が多かったです。

自分の得た知識を伝えるためのアシスト材料として記事などを起こしているところはあるので、来年も他人に伝えるための記事、DevLoveの市谷さんが言っていた「ひとのときを、想う」を考えながらいろいろやっていければと思います。

来年の抱負や目標は来年の日記にしたためるとします。

それでは良いお年を。

ざっくり知る「結果整合性(Eventual Consistency)」

「このブログはほぼ毎日更新しているという体裁だが、実際はリアルタイムに更新できていない、ある意味毎日更新という結果整合性だけが伴っている。」という話なんだけど、結果整合性ってなんだっけ、というのまっさらな話からざっくり理解するためのメモ

言葉の意味

分散データベースの文脈で使われることが多く、データの更新の一貫性を即時担保するものではなく、更新後に一定時間経過していれば正しく更新データを取得できるという整合性の考え方

英語を直訳すると『最終的な一貫性』となり、和訳では『結果整合性』という訳が当てられ、2つの意味を統合すると直感的にわかりすい。

解説

言葉としては分散システムで使われる事が多い。分散システムでは同一のデータを複数のコンピュータやシステムに分散して配置し、データそのものも複製して配置する。単一のシステムであればDBも単一なので問題ないが、分散化することによりDBも複製して配置することになるため2つに複製した場合、2つの複製を同期とる必要がある。イメージとしては下記。

f:id:shinkufencer:20191216095403p:plain
分散DBにおける値がズレるイメージ図

この同期を取るタイミングが様々なパターンがあるが、即時ではなく、時間経過があって何かしらの状態で結果として同じ状態になる状態のことを「結果整合性が取れる」と呼ぶ。結果整合性のとり方はいろいろあるが、3分毎に複数のDBを同期するなども結果整合性を取るという意味では1つのアプローチと言えるはず。

もっと詳しく知りたい人は参考リンクの内容を参照のこと。

参考リンク

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

  • 作者:Martin Kleppmann
  • 出版社/メーカー: O'Reilly Media
  • 発売日: 2017/04/11
  • メディア: ペーパーバック

壁紙用に便利なサイト FIND47

年末なので日記的な側面の記事です。

よく出先のMTGとか行くと、画面つないだときに拡張デスクトップが出るので、そこで話をつなげるために便利な壁紙

サイト

FIND/47|みんなで集め、広めていくフォトアーカイブ。

便利なところ

f:id:shinkufencer:20181230101641p:plain
こんな感じでGoogleMapで位置まである

ネタ元

RailsでRSpecの実行時引数を.rspecに書いてRSpecの実行を便利にする

require忘れて時間を取られるみたいなことが多々あるので、.rspecを活用するときのメモ

環境

$ bundle exec rspec -v
RSpec 3.8
  - rspec-core 3.8.0
  - rspec-expectations 3.8.2
  - rspec-mocks 3.8.0
  - rspec-rails 3.8.1
  - rspec-support 3.8.0

使い方

設置

rails g rspec:install

上記コマンドで自動的につくられる、以下生成例

$ bin/rails g rspec:install
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

中身としては以下がデフォルト

--require spec_helper

カスタマイズ方法

--require

--require {{ファイル名}} でspecファイルを実行する前に記述されたファイルをincludeする。

デフォルトでは spec_helper が書かれているが、これを rails_helper とすれば rails_helper.rb が呼ばれる。

--order

テストの実行順番を変えます。

--order [defined]

のように記述します。

[defined] がデフォルトで、毎回同じ順番で実行し、 [random] と記述するとテストの順番を入れ替えます。DBの値などが気付かぬうちに順番に影響されて失敗/成功することもあり得るのでそれらを切り分けるためにもランダム実行にしておくと良いです。

また [random:{{SEED値}}] と記述すると rand のseed値を固定にできるので、特定のrandの値で失敗するときなどはこのオプションをつけて手動実行することができます

参考リンク

Railsのerbで使われる記号の意味

意外とパターンすくないのでまとめてみた

記号別意味(パーセント/だいなり/しょうなりの表記は省略)

<% %>(パーセントのみ)

出力が伴わないがRubyのコードとして操作したいときに使う。 if文で処理を分岐させる場合などに使う

<% if @show_text == true %>
  <p> フラグがたったときのテキスト </p>
<% end %>

変数セットなどもできるがあまり良い使い方ではないので使わないほうが良い

<!-- このテンプレートを使う場合は変数を必ずtrueにする -->
<% @show_text = true %>

<%= %>(イコール)

記述の内容を出力する。

controller内で以下の記述をして

@name = "Taro"

erbで下記の記述をすると

<p><%= @name %></p> 
<p>Taro</p>

と出力される

<%== %>(イコールイコール)

= が1個だけの場合はエスケープ処理をするが、2個つけるとエスケープ処理をしない。

<% @text = "<b>bolds html</b>" %>
<%= @text %>

と記載した場合

&lt;b&gt;bolds html&lt;/b&gt;

上記のようにエスケープされるが

<% @text = "<b>bolds html</b>" %>
<%== @text %>

とすると

<b>bolds html</b>

設定した文字列まま出力される。

<%= -%>(イコールで終端にマイナス)

後ろのが改行を取り除いて出力。

<% @text = " c\nd\ne\n" %>
ab
<%= @text %>
fg

と記述すると以下のように出力されるが

ab
c
d
e

fg

- をつけると

<% @text = " c\nd\ne\n" %>
ab
<%= @text -%>
fg
ab
c
d
e
fg

最後の改行がtrimされる。

<%# %>(シャープ)

コメントアウト、何も出力されない

<% @text = "cde" %>
ab<%# @text %>fg

と書いても

abfg

だけ表示される。

もちろんコード処理も省かれるので

<%# @text = "c" %>
ab<%= p @text.nil? %>fg

と書くと

abtruefg

と出力される。本当にデバッグ用途にしか使えなそう。

HTMLと同等のもの

<!-- -->(びっくり/エクスクラメーション、マイナス)

HTMLのコメントアウト、ただコメントアウトはHTMLだけなので下記のように書くと

<% @text = "text" %>
<!-- <%= "#{@text} tests" %> -->

と記述すると

<!-- text tests -->

と表示される

参考リンク