taisablog

taisa's engineer blog

関連記事

PyLadies Tokyo 3周年記念パーティーでLTしてきた

以前PyLadies Tokyo 3周年記念パーティーに参加してLTしてきたのでその参加メモ。基本的にこれから書く内容は以下の投稿とtogatterにまとまっている内容と似た内容になっているけど記録として書きます。 PyLadies Tokyo – 3周年記念パーティ に参加してきた PyLadies Tokyo – 3周年記念パーティ に参加してきた #pyladiestokyo – massa142’s blog PyLadies Tokyo 3周年記念パーティー Togatterまとめ PyLadies Tokyo 3周年記念パーティー PyLadies Tokyoとは? PyLadies Tokyo は,PyLadies の東京支部です。Pythonが好きな女性同士をつなぐために、よりPythonが好きになってもらえるように、活動しています。初心者の人が参加しやすい入門者向けイベントから熟練者がより楽しめるようなちょっと難易度の高いイベント、みんなでワイワイ発表するLT大会など、様々なテーマで毎月イベントを開催しています。どうぞお気軽にご参加下さい。 https://pyladies-tokyo.connpass.com/event/64367/ 普段は女性Onlyだけど今回は3周年記念イベントということで男性枠を設けてくれている。 PyLadies Tokyo – 3周年記念パーティ (2017/10/15 12:20〜) 参加動機 PyLadies Tokyoのメンバーと一緒にPyCon APAC 2017 in Malaysiaへ行って来たのがきっかけ PyCon APAC 2017 in マレーシア 参加レポ LTスライド PyConをきっかけに英語力を身につける New presentation (2017-10-14 21:18:42) 全体的な感想 この日は翌日にサービスローンチを控えているという状況だった為、会社から直行してLT終わって直帰するという非常に残念な状況だった。前半のLTしか聞けなかったけど、それでもLTは全部おもしろくてものすごく楽しめた。(お酒飲めなかったし食事もほとんどできなかったけど)スポンサーのRettyさん、Google Cloud Platformさんありがとうございました。

Python Bottleのソースを読む 起動編

Pythonの軽量WebフレームワークBottleのソースを読む 起動編 Bottleとは Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library. Pythonの軽量Webフレームワークで、特徴はシンプルで早く、Pythonの標準ライブラリにも依存していないWebフレームワークであることとフレームワーク本体が1ファイルで構成されていることである Class Hierarchy Doxygenを使って出力した図Bottleは1ファイルながら中でそれぞれのクラス、主にServer、Templateが継承関係にあるのがわかる(コード量は4000行位)。ServerやTemplateクラスはたくさんあるが実際はその中のどれかを選択して利用する形となる 起動 Bottleの起動はrun()を呼び出す方法とコマンドラインインターフェースを使う方法が用意されている run()を使う方法 以下のように記載し起動することでサーバが立ち上がる from bottle import run, route @route(‘/’) def index(): return ‘Hello World’ run(host=’localhost’, port=8000, debug=True) コマンドラインインターフェースを使う場合 以下のコマンドで起動可能 # コントローラを指定 python -m bottle ‘package.controller’ # 説明は省略するが明示的にアプリを指定することも可能 python -m bottle ‘package.controller:app’ controller.py # runは不要 from bottle import ,route @route(‘/’) def index(): return ‘Hello World’ 起動処理を確認する コマンドラインインターフェースを使う場合 mainが2箇所あるが、これはサーバアダプダに必要なライブラリを必要としているからで、1つ目のmainでまずサーバアダプタに必要なライブラリを読み込み2つ目のmainでサーバが起動される仕組みになっている run()でサーバを起動する run()では、渡された引数の値をそれぞれ読み込んだあと最後にServerAdapterのrun()を呼び出している。Bottleでは多くのサーバをServerAdapterを継承することでサポートしており、指定されたサーバを起動するようになっている。指定しない場合はwsgirefがデフォルトで呼ばれる。また、appパラメータは特別指定しなければ、内部で自動的にdefaultが使われるので特別指定する必要はない。 サーバをロードするまで処理を追ってみる まず、Bottleでサポートしているサーバは以下のように宣言してある。 server_names = { ‘cgi’: CGIServer, ‘flup’: FlupFCGIServer, ‘wsgiref’: WSGIRefServer, ‘waitress’: WaitressServer, …

Rust+WebAssembly で Hello, World!

以前 Rust をはじめてみよう!という記事を書いた。今回は Rust + WebAssembly を使って Hello, World!の出力をやってみた。 WebAssembly について まず WebAssembly とは何か。本家サイトの Overview をみてみる。ここにある通り、WebAssembly(WASM)は C/C++/Rust などの高級言語を使って開発をしバイナリ形式で動かすことができる。その為 Web 上で高速に動かすことができる。とりわけゲームなどの実行速度が求められるような分野で有効になる。Chrome、Firefox、Safari、Edgeで利用が可能。 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. https://webassembly.org/ よくデモに出てくる Unity を使った動画 https://webassembly.org/demo/Tanks/ Youtube動画 再生回数が一番多い動画をあげておく。2018年2月の動画ですごく分かりやすく説明されている。 Rust+WebAssembly のドキュメント https://rustwasm.github.io https://github.com/rustwasm ここからは以下の記事を実際にやってみる。実際にほぼそのまま実行しているだけなので以下についてはリンクをチェックするだけでも良いです。 https://rustwasm.github.io/book/game-of-life/hello-world.html 事前準備 参考URL:https://rustwasm.github.io/book/game-of-life/setup.html rustup を使って rust をインストールする curl https://sh.rustup.rs -sSf | sh source $HOME/.cargo/env source $HOME/.cargo/envは .zshrc などに記述しておくとよい wasm-pack インストール wasm-pack を使うとビルド・テスト・公開などが簡単にできる curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh cargo-generate インストール cargo-generate を入れるとcargo …

スクラムガイド

スクラムを3ヶ月やってみて

スクラムを初めて3ヶ月たったので振り返る スクラムについて スクラム (ソフトウェア開発) – wikipedia スクラム(英: Scrum)は、ソフトウェア開発における反復的で漸進的なアジャイルソフトウェア開発手法の1つである。この方法論は「柔軟かつ全人的なプロダクト開発ストラテジーであり、共通のゴールに到達するため、開発チームが一体となって働くこと 一定の周期で計画会議→開発(スプリント)、スプリントレビュー、クロージング(振り返り、リリース)を繰り返すことが大事 スクラムを始めたきっかけ 前まで マネージャーの管理コストが高い 開発メンバーが今なにやってるかを把握するのが大変 リリースサイクルが決まっていない為開発、営業、運用の連携が困難 開発したものが放置されやすい 突発的な開発対応に追われる 開発者は言われたものだけをひたすら開発するというサイクルになりがち スクラム体制後 マネージャーの管理コストが下がる 開発チームがなにやってるかを把握できる リリースサイクルが決まる為営業、運用、開発の連携がしやすい 品質が上がる 振り返りによりチーム力が上がる 開発が考えるシナリオを推進することができる 開発チーム個々が自発的に行動できる デメリット 運用などの担当者が必要で担当者がかたよる スクラム体制について 1スプリント2週間、クロージング1週間とする プロダクトオーナー スクラムマスター(自分) 開発チーム4人 ミドルエンジニア 若手ベトナムエンジニア 新卒ベトナムエンジニア 新卒エンジニア スプリント振り返り 1月中旬から始めて3スプリントを実施した。 スプリント1(1/16〜1/27) 機能概要 データ解析+グラフ化 Good/Keep 設計レビューにより実装前の軌道修正ができる 開発チーム+スクラムマスターのレビューにより各自の実装の認識をあわせる プロダクトオーナーレビューにより更に違った目線からの指摘があり最終的な実装の認識をあわせる 設計段階で認識を合わせることにより品質があがる為トータルコストがよい 画面を伴う機能は特に設計レビューによる効果が大きい 設計レビューでアウトプットの認識があうのでビジネスへのアプローチがしやすくなる テスト環境すら整ってない新卒エンジニアがモックテストまでできるようになった 局所的なハンズオンやペアプロは効果が高い スクラムは各自のスキルアップに効果的 Problem プロダクトオーナーとスクラムマスター以外がスクラムの取り組みにおいて受動的 ドキュメント・テストケースの書き方の各自の認識が違う Trelloの更新がうまくできなかった JavaScript処理が複雑 Try GitFlowに切り替えるにあたりバージョニングを検討した セマンティックバージョニングにしたかったがメンバー全員に周知し徹底することが難しいと判断し文字列でタグ付けすることとした チームメンバ全員がモックを使ったPHPUnitが書けるようになったので全員UTを書く開発体制にした ドキュメントの書き方の認識をあわせた JavaScriptの構成やフレームワーク変更を検討する スプリント2(2/6〜2/17) 機能概要 画面レイアウト変更 レポート系 Good/Keep クロスブラウザ・端末テストなどマンパワーを要するテストをみんなで分担してできる為テストが楽で早く終えられる チームメンバー全員がモックテストがかけて開発コードのほとんど(不要な部分は除く)のカバレッジをカバーできている 設計レビューの恩恵 要件定義時に認識があっていたと思っても設計すると認識がずれていたりするがレビューの中で最適な解を見つけることができる 実装前のレビューで懸念点をつぶしてながら設計できるのが気持ちいい 実装前にの実装イメージが具体的に湧く為テストが書きやすい 設計後実装の分担をするとテストを先に書けるケースが出てくる 開発チームが各自自発的に行動するようになった Problem ドキュメント作成に時間がかかる コーディングスタイルの指摘が多い 最初に作成したスプリントバックログの作業量をオーバーした タスクの粒が大きいと初日のスプリントバックログ作成の時間だけでは正確な見積もりができないことがわかった Try 計画会議とプロダクトバックログ作成を1日で実施した 翌日以降の個人の動きが明確になり個々人が個別に自主的に動ける デイリースクラムにスクラムマスターが参加しないようにした コードフォーマットチェック(php-cs-fixer)をgitのpre-commitに導入した php-cs-fixer導入参考ブログ WIPを導入した 次回以降はもっとIF・クラス設計に重点を置いて開発する方針にした スプリント3(2/27〜3/10) 機能概要 機能の外部埋込プラグイン Good/Keep 失敗覚悟でギリギリのベロシティのタスクを設定したところ色々新しい課題がみえた 開発メンバ各自の実機テスト環境を改善した 既存バグの修正ができた 課題 タスクの難易度があがるとコミュニケーションコストがかなり高くなる 受け入れ条件の範囲を超えた作業をした為余計に時間を費やした 2週間という期間にしばられて品質を落とす形になった コミュニケーションコストを見積もりに入れてなかった …

2019年の抱負

本業頑張るのはもとより、2019年の抱負がある程度固まってきたので書いておきます。 Google Cloud Platformを使う これまでAWSを自分で多く触るケースはあまりありませんでしたが、GCPを使うケースが増えてきたので今年からはAWSではなくGCPをたくさん触っていこうと思います。 数学をやる 高校3年になるまでは大学行く気もなく全く授業をまともに受けていませんでした。高校2年の終わり頃に少しまじめに授業を受けるようになり、少しずつ数学が楽しくなってきた頃大学進学も視野に入ってきました。そんなときに自分が文系を選択していたことを知り、私立受験は英国社の三教科であることを知り(国立など受験の仕組みすら知らず)、そこで自分の数学学習人生は終わりました。そんなこんなで今までやってきたのですが、ふと最近以下の投稿をみてなんとなくやってみようかなと思いはじめました。記事のようにAIや機械学習の為ということも少しはありますが、自分としてはただの興味ですのでどこまでやれるかはわかりませんが、今小学中学の復習を終え数I・Aをちらちらみはじめています。 文系エンジニアが機械学習に入門するために小学校の算数から高校数学までを一気に復習してみました。 宅建をとる 今の本業が不動産テックということもありますが、これもただ興味が出てきたのでやってみようかなという感じです。宅建みやざき塾というYoutube動画が秀逸なので今はこの動画を移動中などにみています。 体力をつける 小さい子供が2人いると休日にランニングすることもままならないので去年は体重がかなり増えてしまいました。運動ができてないだけでなく、肩こりなど疲れやすい状態になっていたのでこれを今年は改善しようと思います。最近は食事や運動を気にしつつ「長生き味噌汁」をはじめました。 まとめ どこに向かっているのかという感じはありますが、本業で事業を伸ばすことを頑張りつつこれらをやっていこうと思います。