12/1に読んだAdvent Calendarとその感想
アドベントカレンダーを毎年なんとなく読んでしまっていたので、何を読んだか・どう思ったかメモを残すことにしました。
増えたら下に書き足します。
退職者その2 Advent Calendar 2017 - Adventar より
ボーナスのタイミング大事ですね。
再起する青年アドベントカレンダー より
腹くくってる感じがしてカッコイイと思った。
「リスク人材」ってネーミングは記事の筆者が考えたんだろうか?
FOLIO Advent Calendar 2017 - Qiita より
お友達のよこな氏の記事。
よこな氏がめちゃくちゃ頑張って働いているのが伝わってくるいい記事でした。
FOLIOさんにはちょっとしたご縁があり、ご飯をご一緒させてもらったことがあるのですが、みなさん元気で明るくて仕事に対して熱い想いがあってカッコ良かったです。
証券外務員の資格をメンバーみんなが勉強して取得していたり、楽しそうにお肉を食べていたり、素敵な会社ですね。
川崎フロンターレ Advent Calendar 2017 - Adventar より
1枚目の写真がすごい綺麗。
フロンターレの試合みてみたいって言われるのいい!
初めてスタジアムに来る人が楽しんでくれたら嬉しいですよね。
SHIROBAKO Advent Calendar 2017 - Adventar より
SHIROBAKOのアドベントカレンダー、すごい楽しみでした!
興津さんクールで可愛くて、こにふぁーさんは興津さんの何について書くんだろう?と思ってたらなんと『左眼』!!!
全話観て書いたんだろうなぁ、と思いながら読みました。
関係ないですが「お久しぶりです、服部さん。警部に昇進なさったんですね」のシーンでいつも泣きます。
プルリクとかレビューについて尊敬できるエンジニアに相談してみた話
誰かと開発することを忘れかけていて、
もぅマヂ無理。。。とりあえずLGTMしょ。。。
となりかけてしまったので、尊敬できるエンジニアである夫に相談してみました。
世の中の正解かは分からないですが、私は参考にしたいと思ったのでまとめます。
レビューの仕方がわからないです!!どこから見たらいいかわからないです!!
プルリクでは「意図」がわかるようにしたほうがいい。
夫が所属しているチームでは下記の内容をプルリクの説明(description)に書いているそうです。
※上記を書いていたらプルリクが分かれるはず、とのことでした。
ちなみにプルリクのテンプレートというものがあるらしくGitHubでも設定できるそうです。
GitHubのIssue・Pull Requestのテンプレート機能を使おう - Qiita
「密にコミュニケーションとれるんだからそこまでしなくてもいいんじゃない」って言われたらどうすれば…?
次に入ってくる人はそれで困らないの?
まとまってない段階でコミュニケーションして、あなた( @maetoo11 )は困らないの?
→これは確かにそうで、私にとっては会話やチャットで聞き出すのは高コスト(MPの消費が激しい)ということを思い出しました。
「速さが大事だからそこまでしたくないんだよね」って言われたらどうすれば…?
そこまでしないならレビューしなくていいと思う
“そこまでしない"状態でレビューするのはやった気になってるだけ
→ううううううう(´-﹏-`;) 100%は無理でも意味のあるレビューできるようになりたいです…!
コミットの粒度は雑でもいいの?
そもそもこれを満たしたら(上記のプルリク説明を書くようにしたら)プルリクごとに読めるはず。(コミットは気にしなくてよくなるはず)
→これは場合によるかな、と私は思います。コミットごとにロールバックすることとかあるかもしれないですし。
粒度に関しては私は下記記事が参考になります。
【初心者向け】「コミットの粒度がわからない問題」の模範解答を考えてみた - Qiita
感想
夫と話して気づいたのですが、なぜここまで悩んだかというと
『意味のあるコードレビューがしたい』
と思ったからでした。
『JetBrainsのIDEはコードを書くということに集中できるようにつくられている。
それと同じようにプルリクの説明をきちんと書いたり、コミット粒度を考えたりするコストをかけてもレビューすることに集中できたほうがいい』
と思いました。
株式会社サムライズムに入社しました
タイトルのとおり、2017年8月1日に株式会社サムライズムへ入社しました!
↑入社式の様子です。
何をしている会社なの?
サムライズムは国内外のエンジニア向け素敵ツールの販売を行っている会社です。
JetBrains製品や、Mackerel、GitHub Enterpriseなど取り扱っている製品がいろいろあります。
まえとーは何をするの?
受発注管理システムのメンテナンスから営業、事務、広報までなんでもやります!
なぜなら、しゃちょーと私の2人しかいない会社だからです。
このブログを更新しているときはOSC京都の出展で出張しています。
なんでサムライズムに入社したの?
できることだけやるよりも、できないかもしれないけどできたら面白そうなことにチャレンジしたかったからです。
あと、事務作業が得意というのをマイナスではなくプラスとして扱ってくださったので、自分の持ってる強みを活かせそうだと思いました。
不安はないの?
会社が大きくないことについての不安はありません。
いま1番の心配は英語がまったくダメなことです。
海外の製品も取り扱っているので開発元とのコミュニケーションが必要なのですが、私は読み・書き・会話のどれもダメダメです。
ただ、ずっと苦手だった英語を克服できたら嬉しいので、ちょっとずつ勉強していきたいです。
ワクワクしてることはないの?
IntelliJ IDEAやRubyMineちゃんのショートカットを覚えて、ドヤ顔できたらいいな!と思っています。( ・´ー・`)どや
あと、受発注作業をシステムの力で効率化したいです。
(かなり効率化されているのですが、しゃちょーの頭の中だけにあることがいっぱいあるので、それを取り出して整理していきたいな、とこっそり思っています)
業務改善が大好きなので、超楽しみです!
↑こんな感じのエンジニアを目指して行きたいと思います!(๑•̀ㅂ•́)و✧キラキラで筋肉で英語もペラペラで時々ミドルキックを飛ばすエンジニア氏
— O_o (@uskey512) 2017年7月14日
オフィスは池袋にあるのでいつでも遊びに来てください。
Switchとスプラトゥーンを持ってくればしゃちょーと一緒に遊べますよヽ(=´▽`=)ノ
もちろん、弊社のハンズオンに参加してくださるのも大歓迎です!
これからもサムライズムとまえとーをどうぞよろしくお願いします。
感謝の正拳突き的なやつ(退職エントリ)
2015年5月に入社した株式会社Socket(現:Supership株式会社)を退職しました。
(正確には7月末付で退職します)
ちょんまげCTOとの衝撃的な出会いから、初めてのRails、Scalaでの挫折、請求業務への挑戦などなど、色々なことがあってとても濃い時間を過ごすことができました。
本当は振り返りを書けるといいのですが、圧倒的に文才がないので、感謝したいことだけを書こうと思います。
感謝の正拳突き
Web業界ほぼド素人の私を雇ってくれた
本当に、驚きでした。
このフェーズで?!私ド素人だよ?!みたいな心配と役に立てるのだろうかという不安を抱えて入社しました。
この後にも書きますが、初めてのうぇっぶ業界で何もわからない私にとても丁寧に説明して、失敗したときはフォローして一緒に対策を考えてくれて、ピンチのときはギリギリまで粘るのを見守って一緒に戦ってくれて、本当に感謝しかないです。
挑戦も挫折も見守ってくれた
うまくいかないときも、新しいことに挑戦するときも、必ず誰かが声をかけてくださいました。
Scalaのプロジェクトから外れたいと相談したときはCTOとアーキテクトの先輩がそれぞれ時間をとってお話してくださいました。
請求業務をどうにかするプロジェクトに挑むときは、エンジニアだけでなく営業さんやバックオフィス担当の方など、色々な人が協力して応援もしてくださいました。
声をかけてくれる、話したら聞いてくれる、という環境は今までなかったのでとても嬉しかったし、失敗に必要以上に怯えることがなくなりました。
楽しいことをやればいいと教えてくれた
www.slideshare.net
各メンバーがお互いにそれぞれの大切なものを尊重していた
私が持っていない考え方だったので、文化としてそれが浸透している状態を知ることができて良かったです。
例えば、猫の調子がよくないから病院に連れて行ってから出社する、ということに対して、不満や陰口が出ませんでした。
新卒で入社した会社は「妻の体調が悪いので午後半休をとります」と帰った社員に対して「なんで帰るの…?仕事は?」という雰囲気が漂っていました。
そういうのが全くなく、パートナー、猫、自転車、山登りなど、それぞれが大切なものを尊重していました。
「お互いを尊重しなきゃ!」みたいなスローガンがあったわけではなく、ただ、それぞれが認めあっているような雰囲気でそれが大好きでした。
写真は先輩宅のにゃんこさんに遊んでいただいたときのものです。
プログラミング以外のことにも挑戦できた
請求業務で使うサービス作成や業務フロー整理に挑戦できました。
プログラミング以外のことをやる時間が増えたときにエンジニアを名乗っていいか分からなくなってCTOに相談したら
「お前がやっていることはエンジニアリングだぜ。エンジニアリングっていうのは色んな形があるんだよ」
というメッセージをいただきました。
この言葉のおかげで、気持ちが楽になって腹をくくって請求業務の整備に挑戦することができました。
ありがとうございました!!!
素敵な会社で働くことができて、幸せでした。
今後について
またまたIT業界で働きます。
私にとっては大きなチャレンジなので、今からワクワクしています。
(2017/7/5 12:40 追記)
ほしいものリストを作ってみました!
退職ほしいものリスト
Rspecの書き方を先輩たちに質問してみた話
コードリファクタリング中にテストを書こうと思ったのですが、ふと考えたら私のRspec冗長な気がする…!と思い、会社のSlackで先輩方にRspecの書き方を質問してみました。
ちなみに私が書いていたテストコードはこんな感じ。
describe 'hoge_method' do context 'hogeがふむふむのとき' do example 'trueになること' do ・・・略・・・ expect(piyo.hoge_method).to eq true end end end
冗長かも?と思ったのははexampleとexpectの内容がほぼ同じだからです。
先輩方からのアドバイス
先輩01さんの場合
context "valid" do context "hogehoge" do it do end end end context "invalid" do context "mogemoge" do it do end end end
同一context(テストデータ)で複数 it はしてないです。
先輩02さんの場合
describe … テスト対象
context … xxの時
it … こうなるって感じですね。itはシンプルな時は省略したり
先輩03さんの場合
itに引数与えたら負け
↓のように期待値がexpect読むだけで一目瞭然になってればベスト
it { expect(true).to be true }
it 'trueになる' { expect(true).to be true }
は冗長
※「理想なので追い求めすぎると逆にコストかかるので適度なところで線引が必要」とのことでした!
その他書き方に関する意見やアドバイス
- letを上書きしない
- テストデータを共通化しないで、各テストで全部書くのがいいとは一概には言えない
- letはoverrideできるのが便利なとこで、contextに付随する条件を明示的にするのに便利
- 期待する結果がruby的なrueの値の場合、be以降を省略できる→
expect(true).to be
- be_truthyとか be_falsy とかもある
- scala checkについては「テスト対象の関数への入力を(ある一定の境界内で)ランダムに生成して、境界値テストを自動化してバグを洗い出す手法」→テスト対象として興味ないデータをランダム値にするのとは意味が違う
結論
私が担当しているプロジェクトのテストコードは下記のように書くことにします。
describe 'hogehoge?' do context 'humuhumuが0のとき' do it { expect(piyo.hogehoge?("HOGE")).to be_truthy } end end
letは使いこなせる気がしないので、使いたい!という場面が出るまでは使わない感じにします。
最後に
他にもこんな書き方があるよー!などのご意見やアドバイスがあればうかがいたいです!
先輩方、ありがとうございました🙏
参考サイト
メモ:2次元配列の行列を入れ替える
自分用のメモ。
理解を補助するために作成。
参考サイト:
ワクガンス | JavaScriptの覚書
参考コード:
function transpose(a) { return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); }); }
※参考サイトより引用
Object.keys(array)
で2次元配列の添字を返す。
これが変換後の行の添字になる。
var array = [[部門コード, 1000.0, 2000.0, 3000.0, 4000.0], [ほげ, 1.0, 4.0, 7.0, 10.0], [ふむ, 2.0, 5.0, 8.0, 11.0], [ぴよ, 3.0, 6.0, 9.0, 12.0]]; console.log(Object.keys(array)); // console: [0, 1, 2, 3, 4]
参考:
Object.keys() - JavaScript | MDN
mapの中でmapを実行すると、2次元配列がかえる。
最初に変換後の行の添字を取り出したのは、縦に読んでいくため。
各行の0番目の値を取り出した配列を作る、行の1番目の値を取り出した配列を作る…を繰り返して、新しい2次元配列を作成。
納得ヽ(=´▽`=)ノ
DockerでRedmineを動かす
概要
自分のMac Book ProでDockerを使ってRedmineを起動させるところまでやってみた。
(とりあえずやってみた系の記事)
portの指定に注意。
手順
起動して「Docker is running」になっていることを確認。
コンソールを開いてdockerコマンドが使えることを確認。
$ docker -v Docker version 1.13.1, build 092cba3
Redmine用のDockerイメージがあるかを確認。
$ docker search redmine NAME DESCRIPTION STARS OFFICIAL AUTOMATED redmine Redmine is a flexible project management w... 369 [OK] sameersbn/redmine 232 [OK] bitnami/redmine Bitnami Docker Image for Redmine 14 [OK] 74th/redmine-all-in-one Redmine includes hosting SVN & Git , backl... 9 [OK] vpetersson/redmine 2 [OK] eeacms/redmine EEA Redmine docker setup 2 [OK] inspiredgeek/redmine-alpine Simple Docker images to run Redmine tracke... 2 [OK] commonms/redmine Docker image for Redmine. 1 [OK] fjudith/redmine Dockerized Redmine based on redmine:3.3 of... 1 [OK] starfox/redmine-plugin-dashboard A container designed to install redmine-da... 1 [OK] puffinrocks/redmine Redmine - project management and issue tra... 0 [OK] zhusj/redmine Customized Redmine 0 [OK] openfrontier/redmine Redmine docker plus the agile plugin. 0 [OK] ppschweiz/redmine 0 [OK] liumiaocn/redmine redmine alpine image 0 [OK] thiagorider/redmine Redmine Docker Image Automated Build Repo. 0 [OK] honsiorovskyi/redmine Official Redmine + Git + Mercurial 0 [OK] abcfy2/redmine redmine docker image forked from official ... 0 [OK] thooams/redmine Fork docker redmine 0 [OK] tukiyo3/redmine redmine 0 [OK] mikroways/redmine redmine passenger image 0 [OK] miko2u/redmine Redmine 0 [OK] enderson/redmine Dockerized Redmine application 0 [OK] shiratamag/redmine openshift redmine test 0 [OK] speed/redmine Redmine 0 [OK]
今回は公式のRedmineイメージを使います。([OFFICIAL]が[OK]になっているもの)
$ docker pull redmine Using default tag: latest latest: Pulling from library/redmine 5040bd298390: Pull complete 596ec0bfbfe7: Pull complete 330c0f0b9895: Pull complete 759aaf3bf184: Pull complete 44da9d770a4e: Pull complete a9b8139f979b: Pull complete e10cd3a7c32c: Pull complete 7a316ad832a5: Pull complete aeacba04b652: Pull complete 45ac9e0e8f38: Pull complete 5fca085ddfc6: Pull complete 969036701fdc: Pull complete a08e120d50ea: Pull complete d26197c612f3: Pull complete cf0ff0b2dba2: Pull complete Digest: sha256:e59bcba1a77fe25c84ee7d536ff6e23ded685846cfa91e4c02854d57391a52de Status: Downloaded newer image for redmine:latest
Dockerを起動する。
※-pはローカルとDockerのポートの紐付け。これをやらないとアクセスできない。
$ docker run -p "3000:3000" redmine warning: missing REDMINE_DB_MYSQL or REDMINE_DB_POSTGRES environment variables *** Using sqlite3 as fallback. *** Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dependency metadata from https://rubygems.org/. Using rake 12.0.0 Using i18n 0.8.0 Using json 1.8.6 ・・・(略)・・・ Using rails 4.2.7.1 Bundle complete! 32 Gemfile dependencies, 56 gems now installed. Gems in the groups development and test were not installed. Bundled gems are installed into /usr/local/bundle. /usr/local/bundle/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot" /usr/local/bundle/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot" == 1 Setup: migrating ========================================================= -- create_table("attachments", {:force=>true}) -> 0.0053s -- create_table("auth_sources", {:force=>true}) ・・・(略)・・・ == 20160529063352 AddRolesSettings: migrated (0.0014s) ======================== /usr/local/bundle/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: "inodot" [2017-02-19 14:40:57] INFO WEBrick 1.3.1 [2017-02-19 14:40:57] INFO ruby 2.2.6 (2016-11-15) [x86_64-linux] [2017-02-19 14:40:57] INFO WEBrick::HTTPServer#start: pid=1 port=3000