ばったログ

3回に1回くらいはやったことをアウトプットしていく

GROWIでどんなwikiが作れるのか確認したいなら、まずは開発者wikiを見てみよう

社内ナレッジ蓄積のためにwikiの導入を検討中。GROWIがかなり良さそうだったので調べた記録。

GROWIとは

Crowi派生の最強のWiki
最強のWiki「Crowi」のフォーク、「GROWI(旧crowi-plus)」を公開した話 - Qiita
最近ではSaaSwikiとしての提供も始まっている
GROWI.cloud - 情報共有をもっと身近に、もっと手軽に
オープンβ中とはいえ、ライトプランだと324円/月で
30ユーザーまで利用可能ってのはすごい(これも選定した理由の一つ)

GROWIでこんなwikiが作れる

今回の本題
GROWIには自由に記事投稿ができるデモサイトがあり、記事の入力方法は確認できたがイマイチwikiの活用イメージができなかった。
そこで、GROWIを利用したwikiがどこかに公開されていないか探して見たところ、GROWI Developers Wiki(開発者wiki)がとても参考になった。
/ - GROWI Developers Wiki

  • TOPページの構成がそのまま参考にできそう。
  • 記事も具体的に作成されているので、活用イメージができる。

あと、このTOPページ見て特にいいなぁと思ったのがこれ 各階層の投稿記事を一覧化できるやつ、こんな書き方すれば表示可能。 f:id:madades_k:20190916233152p:plain

これはpukiwikiにもあった任意のページの下の階層のツリー表示を行う事ができるプラグインを移植したらしい。
Qiitaの記事でも言及している)だけあって、こだわりポイントの様子。実施、便利そう。

感想

Markdownで書けることと、できれば料金お安いところでwikiをいろいろ探していましたが
その中でも、かなり使いやすそうな印象。まずは自分で使い込んでから、広めていく予定。
今回wiki本体の機能には触れていませんが、googleOAuth2 認証でのログインとかテーマ切り替え機能など
なかなかにいじりがいがありそうな機能が豊富でした。
布教活動に専念するためにも、自力構築ではなくでできればGROWI.cloudが使いたい
(そのためには稟議とか通さないとダメそうなのが心配ですが)

参考リンク

Amazon Linux 2 でもwinexeが使いたい

Amazon Linux 2 でもwinexeが使いたい

AWSLinux機(Amazon Linux 2)からWindows Server機向けバッチを叩く必要があったので、色々試した時の記録

winexeについて

Linux から Windows 上のコマンドを実行することができるツール

この記事について

取り扱うこと

取り扱わないこと


1.VagrantAmazon Linux2を動かす

全く触ったことのなかった Amzon Linux 2 をいじってみたいけど、EC2のインスタンスをぽんぽん立てる権限は持っていない
そんな自分がローカル環境で色々試すために使っていたのが Vagrant の Amzon Linux 2 のBoxイメージ
Vagrantの説明も省いてコマンドだけ載せときます。

vagrant init bento/amazonlinux-2
vagrant up 
vagrant ssh

bentoのboxはchef社のプロジェクトということで野良Boxよりは安心だと思いますが、
正式な導入方法はAmazonでもアナウンスされているので、そっちの方がより安心な様子。
* Amazon Linux 2 を仮想マシンとしてオンプレミスで実行する - Amazon Elastic Compute Cloud * VagrantでAmazon Linux 2を実行する | DevelopersIO

2.AWS上のAmazon Linux 2 でのwinexeの準備

ローカル環境下のAmazon Linux 2 で試行錯誤の後、
EC2上のAmazon Linux 2 に実際に打ったコマンドを載せていきます。
(root権限で実行しています。ログは省略)

パッケージの追加

amazon-linux-extras install -y epel
yum update -y 
yum install -y gcc \
  perl \
  mingw-binutils-generic \
  mingw-filesystem-base \
  mingw32-binutils \
  mingw32-cpp \
  mingw32-crt \
  mingw32-filesystem \
  mingw32-gcc \
  mingw32-headers \
  mingw64-binutils \
  mingw64-cpp \
  mingw64-crt \
  mingw64-filesystem \
  mingw64-gcc \
  mingw64-headers \
  libcom_err-devel \
  popt-devel \
  zlib-devel \
  zlib-static \
  glibc-devel \
  glibc-static \
  python-devel \
  gnutls-devel \
  libacl-devel \
  openldap-devel \
  jansson-devel \
  lmdb-devel \
  gpgme-devel \
  libarchive-devel \
  pam-devel \
  gdb

sambaのソースコード取得とconfigureまで

mkdir -p /usr/local/src/samba
cd /usr/local/src/samba
wget https://download.samba.org/pub/samba/samba-latest.tar.gz
mkdir samba-latest 
tar zxvf samba-latest.tar.gz -C samba-latest --strip-components 1
cd /usr/local/src/samba/samba-latest
PYTHON=python2 ./configure

winexeに必要なパッケージ(mingw32,64系)がインストールされているかを確認

cat /usr/local/src/samba/samba-latest/bin/config.log | grep HAVE_WINEXE_CC_WIN

出力結果でこのような表示が出ていればOK

#define HAVE_WINEXE_CC_WIN32 1
#define HAVE_WINEXE_CC_WIN64 1

最後にビルドとインストール

PYTHON=python2 make
PYTHON=python2 make install

winexeバージョン確認

/usr/local/samba/bin/winexe --version

出力結果

winexe version 4.10
This program may be freely redistributed under the terms of the GNU GPLv3

感想

Amazon Linux 2 はCent OS7互換だからその辺を参考にすればいけるかと思ったら、思いの外大変だった。
EC2の標準のAMIにCent OSがないので(Red Hatはあるけど) Amazon 的には こっちを推してきたいのだなというのは伝わった。
なお、導入したwinexeはその後問題なく利用できているが、バッチで使うとき id pass を平文で置いているので(一応権限設定はしているが)、この辺をなんとかしたい。

参考リンク

新しくなったwinexe - Qiita

この記事を参考に、以下の変更を加えています。
* epel-release の部分をAmazon Linux 2 用に変更 * sambaのソースコードをgit cloneから直接wgetで最新版を取得する方法に変更 * 初期導入済みのPython2.7系で実行できるように環境変数設定

AmazonLinux2 に最新の Samba4.10.5 をドメインコントローラとしてインストールする - らくがきちょう

Amazon Linux 2 にsamba導入記事
この記事で紹介されている導入パッケージ群にmingwXX系を加えることで
winexe も 使えるようになります。

tar(1) でアーカイブ前の名前ではなく新たな名前のディレクトリで展開したいときのメモ - Qiita

tar 解凍時のフォルダ名を指定することでsambaのバージョンが変わっても対応できる(はず)

『カイゼン・ジャーニー』一人旅の中間報告

今年の8月に『カイゼン・ジャーニー』を読んだ際、著者の市谷さんに返信いただいたので Twitterの方で感想をかるーくまとめていた。

振り返りの振り返りを兼ねて、この4ヶ月ほどの活動まとめてみる。

私はこんなことをやっている人

  • SE歴5年程、コード書いてるのは3年半くらい
  • 社外のスクラム開発のチームに4か月ほどいた経験あり
    • スクラムが「理解が容易だが習得は困難である」ことを知っている
  • 現在はウォータフォール型の開発、進捗はWBSで管理
    • 実装中心だがタスクの粒度が大きめなので、自分でも進捗を管理することにした

■現在取り組んでいること↓

※カッコ内はスクラムでの用語に当たりそうなものを書いています

ひとり朝会(デイリースクラム)

以下の3点セットが書かれたメモを確認後、業務を開始

  • 昨日やったこと
  • 今日やること
  • 困っていること

朝会用の資料を前日の業務終了時に準備することで、セーブポイントを作成
翌日、ロードすることでスムーズに作業に復帰
と言うイメージで実行中。
困っていることは、週末の振り返り時にカイゼンしたりチームに相談(できれば)して早めに解消を心がけている。

ひとりタスクマネジメント(スプリントプランニング?)

WBS上の1つのタスクが完了し次のタスクに取り掛かるタイミングで実施。
タスクはだいたい 0.5人日から3人日で粒度もまちまち。
タスクとして扱うには大きく 分厚く 重くそして大雑把過ぎることが往往にしてあるので最初は分割作業を実施する。

現在は(語感も良いので)以下の3つの工程を何度か繰り返して適度な大きさに分割後、作業に取り掛かってている。

タスクの理解

仕様書、設計書などを確認し、作業完了までの流れをイメージ

タスクの分解

大きくても4時間以内に完了できるくらいに分解

タスクの再構築 再定義

設計書から読み取れなかった

  • 実装しないといけない部分
  • 実装しなくていい部分

を設計者に確認


この作業を経て受け入れ条件(Acceptance Criteria)と完了の定義(Definition Of Done)が明確になった、適度な大きさのタスクができるように心がける

実装(スプリント実施)

タスクがそのまま備忘録となるので、上から順番に粛々と作業。
ちなみに、レビュー指摘や設計変更などの割り込み作業が入った場合は
Trello(後述)のタスクとして起票して後回し。(スイッチングコストを意識)

ひとりレビュー(スプリントレビュー)

レビュー依頼を投げるという工程がない・・ので
設計者とズレがありそうなところなどの動作を確認してもらう。

(この辺は、一番カイゼンしたい部分だが時間とチームの協力が不可欠な部分)

ひとり振り返り(スプリントレトロスペクティブ)

週末プライベート(個人での学習など)な振り返りのついでに、仕事の方の振り返りも実施。


やっていることの一連の流れをまとめてみると、WBSのタスク1つひとつを短いスプリントのようにして日々の仕事をこなしている感じ?
今の所は、まずまずの成果が出ております。

■あとがき/反省点

  • まとめ部分での触れたが、WBSのタスク1つひとつが短いスプリントのような感じになっている
    • 毎回せっせとバックログを作成している?
    • 受け入れ条件などが整ったバックログとして詰めたいので、もっともっと仕様を教えてくれ!となる
      • (あれ、やっぱり仕様をわかっている人が作った方が早いんじゃry)
    • 自分 VS タスク な環境を生きる
  • 他の人の動きがわからないので、全体朝会なり定時ミーティングなりスプリントレビューなりやりたい
  • 振り返りがうまくできているかはやはり不安(一人なので)
  • タスクにかかる時間nの見積もりはしていない(そもそもすでに見積もられている)
  • うまく行けば、第二弾の報告もやる予定。

一人で続けるのも少々つらみがあるので
生存戦略としてのぼっちスクラム」とか「スクラム界のソリスト」を自称していこうかと模索中。

おまけ:使用ツール

Trello

タスク管理ツール 管理のしやすさを優先してWBS上の1タスクをTrello上のカード1枚に対応させカードのチェックリストでタスクの分解を行なっている。
設計の仕様策定中のため一部保留などWaitingと言うよりPendingなタスクが増えているのが最近の悩みどころ。

BoostNote

プログラマのメモ帳とも呼ばれているメモアプリ
何度目かの振り返りでググる時間を減らそうと言うカイゼンの一環で導入
よく使うコードなどをストックするようにしたり
エラーが出たら、スクショと対処法を書き残したりなど色々模索中

Toggl

見積もりはとりあえず保留にしたが、タスクにかかった時間は計測しておきたいと考えたので利用を開始。
chroem拡張を導入することで可能となるTrelloとの連携がGood
最近はプライベートでの時間管理に最近効果を発揮している。

[読書メモ][技術書典5]『絶対に挫折させないアプリ開発 はじめてのLaravel』を挫折せずに読んだメモ

最近PHPを勉強し始めたのですが、一緒にフレームワークも勉強してしまおう!と思っていたところに良さそうな本があったのでその読書メモ

【ダウンロード版】絶対に挫折させないアプリ開発 はじめてのLaravel - plumsa - BOOTH a0ec82c4-cfcc-4827-a937-40583dee6339_base_resized.jpg

対象の読者

  • Progateやドットインストール、入門書等でPHPの基礎を習得している人
  • Laravel を始めてみたが、公式チュートリアルをはじめとするネットの情報源がよく理解できない人
  • 公式サイトなどの説明をみて開発環境を自力で構築できる人
    • 環境構築の参考になるサイトの紹介はありますが、「XXXからインストーラーをダウンロードして...」といった手取り足取りな説明はない
    • (私はHomesteadで環境を作り、設定ファイルなどは適宜読み替えて写経などを行いました)

目次

第 1 章 はじめに
第 2 章 Laravel とは何か
第 3 章 アプリ開発のフローを考える
第 4 章 PHP 開発の準備をする
第 5 章 はじめての PHP 開発 〜TODO アプリを作ろう〜
第 6 章 Laravel 開発の準備をする
第 7 章 はじめての Laravel 開発 〜もう一度 TODO アプリを作ろう〜
第 8 章 2 度目の Laravel 開発 〜さらにもう一度 TODO アプリを作ろう〜
第 9 章 本書を読み終えた後に広がる世界

よかったところ

Laravelチュートリアルが詳しい解説付きで学べる

TODOアプリを3回作ることでコードや実装の比較ができる

  • 5章と7章では素PHPとLaravelを利用した場合の実装の比較
  • 7章と8章ではルーティング部分に偏った処理を「役割分担」を念頭に置いてリファクタリング
  • 設計についても意識でき、Laravel をより実践的に活用しようと思ったときの土台となる

勉強や開発を行う際の情報源が紹介されている

  • 手取り足取りは教えないが道は示す、というスタンス
  • 公式サイトや参考サイト、コミュニティが多数紹介されている

次にやること

  • PHP7系の文法の習得
  • Laravelチュートリアルの続き
  • 『体系的に学ぶ 安全なWebアプリケーションの作り方』
    • そもそもこの本のサンプルコードがPHPで書かれていたのも、学習のきっかけ

紹介されていたサイトなど(一部抜粋)

公式サイト

参考サイト

コミュニ二ティ

TDD+モブプログラミングでワイワイする会 その16に参加してきました

TDD+モブプログラミングでワイワイする会 その16 - connpass

Agile Japan 2018の基調講演(沖繩サテライトに参加していました)を聴いてモブプログラミングに興味を持ったので、参加した時のメモ。

外では琉大祭でガヤガヤの中、こちらのイベントには14人も集まってワイワイしてました。
ちなみに近くでポケモンGO研究会?の出し物をやっていました。

(↓当日のスライドではないが、内容はほぼ同じようだったのでなので引用)

このサイクルでドライバーを交代するルール
テンポよく交代できるし、TDDのお作法に乗っ取って"筋トレ"してほしいとのこと。

モブプログラミング1回目

  • 言語はRuby/RSPec お題はFizzBuzz
  • いきなり実装ではなくFizzBuzzに必要なことをTODOリストにまとめる(これがテストケースの元となる)
  • だいたい以下の流れでドライバーを交代して、ワイワイとモブプログラミングを行った
    • ①Red→Green:テストが通った!と皆で拍手して称え合う
    • ②Green→リファクタリング:ナビゲーター同士で相談。テストを通るためだけに書かれたコードからイケてる感じになるようにコードをリファクタリング
    • ③テスト追加→Red:皆で(大げさに)がっかりする。急いでGreenにしなきゃとドライバー交代。①に戻る
  • 実装はだいたいわかっているだけに、なかなかテストケースを書けなかったのがもどかしかった
  • テストのコメント部分についてはどんなことを書けばいいのかナビゲーター役の時に色々検索した
  • 参考:【Ruby on Rails】RSpecのdescribe/context/itの意味を理解した件

1回目終了後はコードレビューしたり、RSpecのテストコメントには何を書くべきかというプチ講座が開催されていました。

モブプログラミング2回目

  • 人生初のHaskell お題はFizzBuzzPlus(31 など 3が含まれている場合にも Fizz になる)
  • Haskelが使える方がいたので、途中からHaskell講座が始まり、関数型プログラミングがちょっとわかった(ような気がした)

2回目も、知っているお題 x 知らない言語 だといい感じに盛り上がりました。

わかったこと

  • モブプログラミング面白い
    • ドライバーは「有機キーボード」
    • ナビゲーターは「司令塔」。意見を出し合ったり、手が空いてる人が先回りして文法を調べたりしながらコードをより良いものにしていく
  • テスト駆動 は テスト手法 じゃない 開発手法 だ!
    • 分析技法であり、設計技法であり、実際には開発のすべてのアクティビティを構造化する技法
  • ボブおじさん(Robert C Martin)ってすげー!
  • TDDでテストを書く筋トレしよう
    • まずはテストファースト書きで習慣を身につける
    • 業務に取り入れる場合はまずは、コード実装後で良いのでテスト書くようにする
      • テストの無いコードはレガシーコード

次にやること

  • テスト駆動開発』(新訳)を読む
    • スライドにも登場しており、お勧めされていた
    • 「付録C」にはTDDをとりまくここ 20 年の動きについてよくまとまっている(らしい)

でもまずはIPAの試験が控えてるので、そっちを頑張る。

[勉強会メモ]Python関連勉強会参加メモ2つ

まずはこちら
PythonBeginner沖縄 (1年ぶり復活!「機械学習ビギナー向けコース」) - connpass
当初は7月開催予定だったが8月に延期
当日も台風14号(ヤギ)が接近中だったが、無事開催された。

勉強会用資料

勉強会の内容

機械学習ビギナー向けコースと銘打ちつつも
「参加者の皆にはまだまだ早い(講師・談)」ということで、今回は入門準備編。

  • 前半
    Jupyter notebookの使い方やNumPy,Pandasの使い方をささっと
    この辺はざっくりだったので、jupyter notebookは使い方覚えておいてよかった。

  • 後半
    5人くらいのチームに別れて、横浜市の公開データを利用してのデータ解析実習。
    Pandasもちょっと予習してきたのだが、分析用コードが全然書けなかった(無念)。
    チーム内にコードをかける方がいたので、そちらはお任せしてアイディアの取りまとめとか資料作成の方で頑張ることに。
    公開データを活用したビジネスの提案と分析用データを準備し、発表を無事終えることができた。

感想

Pythonの文法やツールやライブラリの使い方を事前に予習していたが
いざ演習となると全然コードが書けなかった。
まだまだ機械学習の入り口にも辿りつけていない感じなので、
次回はもっと予習してから参加したい。


もう一つがこちら
PyData.Okinawa Meetup #36 OpenCVでとことん画像処理 - connpass

勉強会用資料

勉強会の内容

機械学習に限らず、画像を取り扱う際によく使われるOpenCVの使い方について。
ピクセルがどう値を持っているのかの説明から、領域分割までをコードを動かしながらの実習

感想

jupyter notebook 形式のファイルがそのまま講義資料になっていたので
コードと結果がすぐに見られるし、ちょっと数直や引数いじるだけで
色々試せるのがよかった。
ちなみに、上記の資料リンク内の資料のnotebookを順番に動かすだけでも勉強になります。

終わりに

Pythonは独学でやってるので、今後も勉強会等に参加していきたい。

VB6のコードリーディングのためにやったあれこれ(2018年版)

VB6で書かれたコードを読む必要があったので頑張ってみた記録

前提

サクラエディタ

シンタックスハイライトが効いているのでなんとか読めるが
コメントアウトされたコードの残骸が多く辛い。

関数にぴょんぴょん飛びたいのでctagでタグジャンプを試したがうまく行かなかった。
最終的にはgrepのちから技で解決。

Visual Studio Code

もうちょっと現代風な感じでコードを見てみたかったので試した。

やはりと言うかなんというか、先駆者を発見したので全力で乗っかる
VSCodeのシンタックスハイライトと拡張子の関連付け - 頭ん中

プロジェクトフォルダごと取り込んで
串刺し検索するとそこそこいい感じにはなった。

Visual Studio + (拡張)

VisualStudio でソースコード変換系(VB6→VB.NET)の記事が多く引っかかるが
おもしろい拡張が見つかったのでご紹介

Visual Studio のMarketplace から以下の拡張を入れることで
VB6のプロジェクトのまま Visual Studio で開くことができる

この拡張を入れることによってできることは意訳すると
だいたいこんな感じ

できる/使える

できない/使えない

  • 定義へジャンプ
  • フォーム デザイナ 画面
  • Visual Studio 単体でのコンパイル
    (ただし、VB6開発環境がインストールされている場合はPath指定してコンパイルできる様子、未検証)

定義へジャンプができないのがおしい
でも、コードがめちゃくちゃ長いと関数単位で閉じる機能だけでも便利かもしれない。

おまけ

これのサクラエディタ版か Mery版あたりのやつがあれば便利かもしれない
VB6のソースを Javaっぽく変換する秀丸マクロ