「技術」カテゴリーアーカイブ

スクラム開発を5週間体験して思ったこと。

前回はこちらに書いたのですが。

新たな気づきを書いていきます。

属人化を防ぐ取り組み

属人化とは、例えば「この作業はこの人にしか出来ない」という状態です。

この状態を作ってしまうと、その人が不在の場合、完全に作業が止まってしまいます。

それを防ぐ取り組みとして、情報を共有する時間を設定したり、ひとつの作業を複数のタスクに分けて複数人で取り組めるようにしたりして属人化しないように工夫しています。

特に、一つのPBIアイテムを一人で作業しないようにあえて他の人にやらせる、というのも、なるほど、と思いました。

プロダクトオーナー(PO)にもスキルが求められる。

POとは、まぁ、プロダクトを発注して、受け入れる側のプレイヤーですが、

POはプロダクトを受け入れる役割があるのと同時に、開発メンバーにプロダクトの内容をきちんと説明できなければなりません。

さらに、スクラム開発の性質上、POと開発メンバーは対等な立場なので、

POの説明が分からないと、「こんなんじゃ作れねーよ!」と、逆に開発メンバーから怒られるという現象が発生します。

いままでの現場では考えられませんよね。お客様の要求は絶対なので。

なので、PO側も開発メンバーにきちんと説明できるだけのスキルが求められます。

スクラムマスターは空気のような存在。

スクラムマスターは常に開発メンバーと一緒にいるのですが、

開発メンバーではないので、開発には参加しません。

開発者どうして、開発について議論するにしても、スクラムマスターは一切口出ししません。

が、開発メンバーの取り組みを常にチェックして、振り返りのネタを作成します。

俺だったら眠くなりそう。

でも、スクラムマスターは、スクラム開発の状態維持の監視と同時に、POや他部門との調整を行う、いわば窓口的な存在なので。

スクラムマスターも大変そうだなぁ。

お、言う感じで。

また気がついたことを書いていきたいと思います。

AlterLinuxのHDDをSSDに換装する。

前回。

まずはケースを開けて換装が可能かどうかを確認します。

手前がDVDドライブ、奥がHDDです。

これ、どうやって取り出せば良いねん。

でもケーブルがSATAなので、SSDも問題無く取り付けられそうです。

装着されていたメモリです。

種類が異なるのはなんでだろう?

まぁ動いているから、まあいいや。

で、早速SSDを購入してきました。およそ6000円。本体と同じ値段です。

装着。

設置するスペースがないからここに固定する。

HDDはケーブルを取り外して取り付けたままの状態です。

そして、AlterLinuxを再インストール。

感触としては、立ち上がりまでの時間が大幅に短縮されました。

この状態で環境構築をしています。

Eclipseの起動も初回は時間が掛かったものの、2回目以降はほぼ瞬間起動できるようになりました。

これは思った以上に快適。

アジャイルのよくある誤解。

アジャイルはよくウォーターフォールと比較されるのですが、

その中で、アジャイルはウォーターフォールより優れているんでしょ?

とよく言われるようです。

その誤解を解いていきたいと思います。

誤解1.アジャイルはウォーターフォールより優れている。

そんなことはないですw

アジャイルでも得意としているケースと得意じゃないケースがあります。

例えば、常にニーズが変化し、それらをプロダクトに取り込んでいかなくちゃいけない、というケースはアジャイルが得意としているケー死ですが、

逆に、作る物があらかじめ決まっていて、変更されることがないケースはアジャイルにするメリットは無く、逆にウォーターフォールが得意とするケースです。

このプロダクトがどちらのケースに当てはまるか、を役考えて開発手法を選ばなければなりません。

誤解2.ジャイルはドキュメントを作成しない。

そんなわけありませんw

ジャイルソフトウェア宣言というのがあるのですが。

https://agilemanifesto.org/iso/ja/manifesto.html

その中に、「包括的なドキュメントよりも動くソフトウェアを、」「左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。」

とあります。

ドキュメントなんて不要とはどこにも書いてませんよね?

アジャイルでもドキュメントは書きます。でも、それにかける工数はコーディングやテストよりも遙かに少ないです。

誤解3.アジャイル開発という言葉は存在しない。

アジャイルとはソフトウェア開発の状態を表す言葉で、開発手法ではありません。

アジャイルなソフトウェアを実現する開発手法は沢山あるのですが、代表的なのはスクラム開発です。

スクラム開発という手法を取り入れることにより、ソフトウェア開発の状態がアジャイルである、と言うことです。

ま、それを維持するためにスクラム開発とは何か、を関係者全員が理解しないといけませんし、

オイラも今の現場が初めてのスクラム開発ですが、初めて知ることが多く、なかなか面白いな、と思いました。

こちらでも少し書きましたが、

これ以外にも新たな気づきがありました。また別の機会にまとめたいと思います。

古いPCにAlterLinuxを入れて開発PCにしたい。

でん。

ヤフオク!で5980円で購入しました。

CPUはインテル Corei3-2120 プロセッサー

メモリ4GB(2GB×2枚)

ストレージはHDD250GBです。

一応、Windows10Proが入っていますが、このまま使うつもりはありません。

LinuxのISOイメージをダウンロードして、DVDに焼いて上書きインストールしました。

デストリビューションはAlterLinuxを選びました。

フォロワーさんの中にAlterLinuxの開発者がいたので、完全に興味本位です。

感覚的にサクサク動きます。

やっぱりLinuxだからね。

メモリも、アイドル状態でも半分も使用していません。

と、ここまではいいのですが。

このまま使用するつもりはありません。

まずはHDDをSSDに換装したい。

あと、メモリも4GB×2枚まで増やせるらしいので、そちらもやりたい。

Pixel6発表!スペックを比較する!

Googleストアにもラインナップされました。

予約可能です。

スペックをPixel5と比較してみました。

ディスプレイは大型化されています。

Proの方がリフレッシュレートが120Hzと高くなっているので、スクロールがスムーズに動くようになっています。

バッテリーも大容量化されていますね。

RAMはProが12GBです。

下手なPCより多いです。

ストレージは128GBと256GBから選べます。

プロセッサーは、以前から予告されていましたが、独自のプロセッサーTensorを使用しています。

Pixel5(Snapdragon765G)より80%早いと言われています。

カメラも大幅にパワーアップされていますね。

カメラ機能にも、機能追加されているようです。

映ってしまった余計なものを消す消しゴムマジック等々。

Android12が搭載されています。

Android12は他のPixel端末にも提供されると思います。

お値段は、Pixel6が74800円、Pixel6Proが116600円です。

うーん、今はPixel5a購入を目指しているから、ちょっと手が届かないか。

【ラズパイ】0~9の数字を表示する

7セグLEDの桁を4桁に変更しました。

それに伴い、回路も修正。

さて、実際にプログラミを作成していきます。

まずは初期化。

def initialize():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    GPIO.setup(27, GPIO.OUT)
    GPIO.setup(22, GPIO.OUT)
    GPIO.setup(10, GPIO.OUT)
    GPIO.setup(9, GPIO.OUT)
    GPIO.setup(11, GPIO.OUT)
    GPIO.setup(5, GPIO.OUT)
    GPIO.setup(14, GPIO.OUT)
    GPIO.setup(15, GPIO.OUT)
    GPIO.setup(18, GPIO.OUT)
    GPIO.setup(23, GPIO.OUT)
    GPIO.setup(24, GPIO.OUT)


def clear():
    GPIO.output(17, GPIO.LOW)
    GPIO.output(27, GPIO.LOW)
    GPIO.output(22, GPIO.LOW)
    GPIO.output(10, GPIO.LOW)
    GPIO.output(9, GPIO.LOW)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(5, GPIO.LOW)
    GPIO.output(14, GPIO.LOW)
    GPIO.output(15, GPIO.LOW)
    GPIO.output(18, GPIO.LOW)
    GPIO.output(23, GPIO.LOW)
    GPIO.output(24, GPIO.LOW)

LEDを点灯させるのですが、GPIOの番号では分かりづらいので、LEDの番号に置き換え。

def ledA():
    GPIO.output(17, GPIO.HIGH)

def ledB():
    GPIO.output(27, GPIO.HIGH)

def ledC():
    GPIO.output(22, GPIO.HIGH)

def ledD():
    GPIO.output(10, GPIO.HIGH)

def ledE():
    GPIO.output(9, GPIO.HIGH)

def ledF():
    GPIO.output(11, GPIO.HIGH)

def ledG():
    GPIO.output(5, GPIO.HIGH)

これを使って、数字0~9を点灯する処理を作っていきます。


def output0():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledE()
    ledF()

def output1():
    clear()
    ledB()
    ledC()

def output2():
    clear()
    ledA()
    ledB()
    ledG()
    ledE()
    ledD()

def output3():
    clear()
    ledA()
    ledB()
    ledG()
    ledC()
    ledD()

def output4():
    clear()
    ledF()
    ledB()
    ledG()
    ledC()

def output5():
    clear()
    ledA()
    ledF()
    ledG()
    ledC()
    ledD()

def output6():
    clear()
    ledA()
    ledF()
    ledG()
    ledC()
    ledE()
    ledD()

def output7():
    clear()
    ledA()
    ledB()
    ledC()

def output8():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledE()
    ledF()
    ledG()

def output9():
    clear()
    ledA()
    ledB()
    ledC()
    ledD()
    ledF()
    ledG()

【ラズパイ】7セグLEDを試す。

久しぶりのラズパイ。

以前は、温湿度計の測定結果をLCDに表示されていたのですが、

配線が壊れまして、

直巣のめんどくさい、となって、そのまま放置していました。

しかし、7セグLEDを使用したらどうだろう?と思いまして、試してみることにしました。

これを実際に回路に組み込んでみた。

思った以上に配線汚い。

7セグLEDの回路図はこんなかんじ。

下の7端子はラズパイのGPIOに接続。

上の3端子は、トランジスタのコレクタに接続します。

トランジスタのベースには、GPIO14,15,18を接続します。

エミッタはGNDに接続します。

これは、フラッシュ型になっていまして、3桁を異なる値にするためには、出力を点滅するように操作することによって、表示を実現する仕組み。

トランジスタはその出力をコントロールするためのスイッチです。

この回路でLED点灯を確認したので、実際の処理を作っていきます。

【UNITY】GOOGLE PLAYストア登録までの道(最終回)

最後のエラーはこれ。

この App Bundle にはネイティブ コードが含まれ、デバッグ シンボルがアップロードされていません。クラッシュや ANR を簡単に分析、デバッグできるよう、シンボル ファイルをアップロードすることをおすすめします。

これはででバッグ用のデータをアップロードしてください、ということなんですが、

そもそも、このデータを作成するには、

ビルド設定でsynbols.zipを作成にチェックを入れてビルドを行います。

これをネイティブデバッグシンボルにアップロードすればいいのですが。

300MBを越えるとファイルが大きすぎると怒られます。

この現象は、zipファイルを一度展開し、サイドzipファイルに固めるとファイルサイズが小さくなって、アップロード出来るようになります。

こちらの記事を参考にしました。

https://qiita.com/ShortArrow/items/854a9f7e855dd937fee2

これでエラーは全て解消されました。

長かった・・・

【UNITY】GOOGLE PLAYストア登録までの道(その6)

その5

次のエラーは、

この App Bundle に関連付けられている難読化解除ファイルはありません。難読化コード(R8 / ProGuard)を使用している場合、難読化解除ファイルをアップロードすると、クラッシュと ANR をより簡単に分析、デバッグできるようになります。R8 / ProGuard の使用は、アプリサイズの縮小につながります。

参考にしたサイトはこちら。

そもそもの話、ビルドの時にR8オプションをつけると、難読・圧縮化されて、ファイルサイズが小さくなるというメリットがあるのですが、

難読化しているので、デバッグ情報が出力されないという問題があり、それを解決するためにマッピングファイルをアップロードしておくと良いですよ、という話です。

Unityの設定は、プロジェクト設定で行います。

「R8を使用」という項目にチェックをつけます。

これでビルドするときに、マッピングファイルも出力されます。

アップロードするところはこちら。

ReTraceマッピングファイルの所に、aabファイルと一緒に出力されるマッピングファイルをアップロードします。

これで、このエラーは解消されました。

まだ続きます。

【Unity】GOOGLE PLAYストア登録までの道(その5)

その4

次のエラーは、

このリリースは Google Play の 64 ビット要件に準拠していません。
以下の APK または App Bundle は 64 ビットのデバイスで利用できますが、32 ビット向けネイティブ コードしか含まれていません([1])。
アプリには 64 ビットと 32 ビットのネイティブ コードを含めます。Android App Bundle 公開形式を使用して、各デバイスのアーキテクチャが自動的に必要なネイティブ コードだけを受け取るようにします。これにより、アプリ全体のサイズが増大することを回避できます。

これはこちらの記事を参考にしました。

https://qiita.com/nonkapibara/items/a708b856a496a96ccec5

プロジェクト設定のPlayer設定の中にスプリクティングバックエンドの項目があるので、これを「IL2CPP」に変更します。

そうすると、ターゲットアーキテクチャのARM64の設定が可能になるので、この項目をチェックにします。

この状態でビルドしてアップロードすると、エラーは解消されます。

まだ続きます。