出戻りSEの楽しい育児日記

ごく普通のSEの育児とお仕事の日記 たいしたことは書いてない

プログラマの美徳

先日とある講習で「ベテラン技術者Aさんに中堅技術者Bさんを付けて作業してもらいましたがPMの意図するような情報伝搬は起きませんでした。なぜでしょう? みんなで原因を考えよう!」というグループワークがありました。
性善説のお人よしなので「2人ともシャイで人見知りだった…?」なんて思ったのですが、大半の意見は「Aさんが自分の技術を出し惜しみした(自分の仕事が取られると思った)」だったので「えぇ…」ってなりました。
でもあるあるだそうで。幸い私は先輩たちからあれこれ教えてもらった経験ばかりなのでピンと来ない…いや、出し惜しみされてたのに気づかなかっただけかもしれませんが…。

そんな話をしていて、なんとなく思い出したのが、Perl作った人が言ったらしいプログラマの美徳。なんかふと思い立って原文を読んでみました。

原文こちら https://www.perl.com/pub/1998/08/show/onion.html
以下は抄訳。

プログラマの美徳は怠惰・せっかち・傲慢(=情熱の美徳)
コミュニティの美徳は勤勉・忍耐・謙虚
正反対に見えるこれらのことは実は正反対というわけでもないのです。なぜなら全部同時に実行することができるからです。

これらの美徳がなければここまでこれなかった。放棄しなければ、これらの美徳が私たちを未来へと運んでくれるでしょう。

プログラマの美徳の方ばかりが一人歩きしている感ありますが、どっちも必要だよってのがPerl作った人の言ってることですね。

 

中国人がPerlで詩を書けるようにするのが私の未来のヴィジョン、私の選んだ考え方だって言ってておおってなりました(小並感)

BOM付UTF-8のCSVをCakeで

お盆前にリリースが重なったりでバタバタしました。

お盆は実家&義実家にトータル1週間帰省。
プールしたり、海に行ったり、近所の池に亀(大好き)を見にいったりと楽しく過ごした赤子、休み明けの現在見事に保育園登園拒否になりましたorz

 

*


PHPとのお付き合い4か月目。ちょっとお友達になれてきた今日この頃です。
先日、cakephpでBOM付UTF-8CSV吐くという処理を書きました。
初歩的なことなんですが「fgetcsvのサンプルならたくさん見つかるのに…」ってなったのでメモ。

cakephpのFile ユーティリティクラスでBOM付UTF-8

//ファイルのインスタンス生成
$file = new File(<ファイルパス>);

//ファイルを作成
$file->create();

//BOM文字をパッキングして出力
$bom=pack('C*',0xEF,0xBB,0xBF);
$file->append($bom);
$file->append(<出力する文字列>);

//必要に応じてUTF-8に文字列を変換したり
$file->append(mb_convert_encoding(<出力する文字列>, "UTF-8", <変換前の文字コード>));

 

 

Excelで開いたときに「001」とかが「1」になっちゃうのの対策とExcel上の表示★

  • 囲み文字を"から'に変更→'001'
  • タブ文字を追加→001 (テキストエディタ上では001<tab文字>)
  • タブ区切り、UTF-16LE BOM付きで出力して拡張子はcsvに偽装(ただしあくまで偽装。厳密にはTSV)

 

新人さん「BOMってなんですか」

私「バイトオーダー…なんだっけド忘れした…」 ※マーク

 

週3で在宅勤務したい

赤子っていうやつぁ、どうしてこうもすぐ熱を出すのか。
(「保育園入れてるからだろ3歳まで家で見ろ」とか言わないで泣いちゃう)
そして熱が出ていてもたいていの場合元気。
うちの子はまだお喋りはしませんが、言葉よりも雄弁に「外に連れていけ」と要求する。

(ボディランゲージが激しすぎて、保育園の先生に「qさんとこベビーサインとか教えてるんですか?」て言われたけど特に何もしていないw)

 

さて先日、子が熱を出したとき、初めて在宅勤務しました。

自分は頭のオンオフ切り替えが苦手なタイプだと思ってたので、在宅勤務だと仕事にならないんじゃないかと心配したんですが、1時間もすると慣れました。
むしろ、「子が昼寝している間になにがなんでもこの機能完成させる…!」というある意味オフィスにいる時よりも切羽詰まった気持ちで仕事をしたためか、普段より進捗上がった気がします。どうなのそれ…

むしろ週3くらいで在宅勤務したい。「通勤時間って勿体ないんだなぁ…」と痛感したのです。

片道1時間の電車は、本を読んだり音楽を聴いたり刀剣乱舞をしたりするのにちょうどいいなと思っていたんですが、いや圧倒的に無駄だった。
通勤時間がなければあと2時間仕事できるやん。

 

通勤時間もですが、関東に引っ越してきて「家賃、高ッ!!」と思ってから、都内に開発用のオフィス設けてるのが本当に賃料の無駄遣いでは…? みたいな気持ちでもやもやもします。

 

在宅勤務の障壁というと、やはり労働管理なんだろうとおもうのですが、なんかうまいこと解消できないのかなぁ。

PCの操作ログ取るとか、仕事中はずっとカメラ付きでスカイプ立ち上げておいて誰かが確認するとか…?

一番いいのは成果物ベースだと思うんですが、スキルのばらつきとかどう吸収したらいいんだろう。新人さん入って来た時とかどうOJTするんだろう。調べ物とかロジック考えてるときとかどう成果として定量化したらいいんだろう。

フルリモートの会社ってどうやってるのかなぁ~。

 

夫や、友人にも何人かいますが、オフィスに出て人と話したり、オフと完全に環境を切り離さないと力が出ない~ってタイプの人も勿論いる。

赤ちゃんの性格にもよるし。私が不良母過ぎてつむじの横で普段からPC触っているからか、子が状況に慣れていて楽に在宅勤務できた面もある。

これが構って構って欲求の強い赤ちゃんだと大変だろう。

(子にもそういう欲求がないわけではない。夕方以降はべったりです。)


どちらでも選択できるのがベストなんだけどなぁと思う。

 

 

オチが思いつかない、ただの日記のようだ…

 

レスポンシブ対応とは何か言ってみろ

同僚1「レスポンシブデザインって、シングルページのことですか?」

同僚2「携帯とかからアクセスしやすいようDB問い合わせを減らす工夫をすることです。モバイルフレンドリーともいいます」

q 。o〇(いやなんか違うだろ)

 

ということがありました。シャイなので何も言えませんでしたが…

wikiよりレスポンシブ対応↓

デスクトップパソコンや携帯電話といった幅広いデバイスのいずれに対しても、外観や操作方法が最適化された (リサイズ、パンニング、スクロールを最小限にし、読みやすく、ナビゲーションしやすい) サイトを制作するためのウェブデザインの手法。

 あくまで手法の話で、DBアクセスなどの作りの問題じゃないですね。

フラットデザインとセットなのも納得。スマホなどの小さい画面で、フラットデザインでない(ボタンに立体感でるシャドウがついてるとかそういうの)と潰れて見にくくなるので。

あと、よく聞くのがレスポンシブ対応ニアイコール良いUXを提供しましょうという概念だ、という説明。UXハニカム構造とかよく聞くからもしや…と調べてみるたけどここにもDBアクセス含まれてないやんけ! いや遠因としてはあるかもだけど。

 

モバイルフレンドリーはというと、Googleさんが作ったテスト・基準と、それを満たしたサイトを検索で上位に表示する仕組みのこと。転じて、それを満たしたサイトのことですね。

モバイルフレンドリーとは - 意味 | IT用語辞典 サバナビ

モバイルフレンドリーなWEBサイト・WEBページは、拡大しなくても読みやすいテキストサイズ、横スクロールの必要がない、リンクやボタンがタップしやすい、Flashを使用していないといった点が挙げられる。

 

じゃー「DBへのアクセスを少なくして云々ってなんなの」って話ですが、これは「シングルページアプリケーション」というお名前で…なんていうか…その…ねえ…。

 

いずれにしろ、 概念としては別物なので混同しないようにしたいです。

カスタム投稿ページにリンク張る方法

自分用の覚書。

①「archive-〇〇.php」というファイルを作成
②「function.php」に下記を追加
function my_custom_init() {
register_post_type( '〇〇', array(
'label' => '表示する名前',
'show_ui' => true,
'has_archive' => true,
'capability_type' => 'post'
));
}
※追加内容はリファレンス見つつ適当に追加すること 気が向いたら追記しよ~
WordPressの「パーマリンク設定」で「数字ベース」を選択
④リンクを張りたい箇所は下記のように
<a href="<?php echo get_post_type_archive_link( '〇〇' ); ?>">リンク文字</a>

 

で、この「WordPressの「パーマリンク設定」で「数字ベース」を選択」というのがミソだったようで、気づかずに30分くらい苦しんだという話。

③をやってもリンクが繋がらない場合は、設定画面を適当にいじって再度手順を繰り返して保存するか、Chromeならハード再読み込みしたら上手くいきました。

Agnosticってなんぞ

最近WordPressでの開発をやってます。

リファレンスがところどころ日本語のものがなく、まあ英語分かるので読みながらやっているのですが、「script-agnostic」という知らない単語に遭遇。

agnosticをWeblioでひくと不可知論と出てくる。これじゃないな~。

agnostic meaningとかで検索して出てきたものを数点訳しました↓

  • Agnostic ITの文脈では、様々なシステム間で相互に利用できるよう一般化されたものを示す。ソフトウェアやハードウエアだけでなく、ビジネスプロセスや習慣についても使用する。
  • Product-agnostic 特定の商品(特定のデバイスやアプリケーションなど)に関連しない、またはどのようなタイプの商品でも相互利用できるようなものを指す。

「非依存の」とか「汎用的な」とかと訳すとしっくりくるでしょうか。

アジャイル開発は胡散臭くない

仕事の都合で『アジャイルサムライ』を再読しました。

数年前初めてこの本を読んだ時はあまりの理想的で現実からかけ離れた内容に「胡散くせ〜〜!」と叫んで投げ捨てたい衝動に駆られたものでした。

「そんなプロジェクトあるわけない」と思ったのです。今もわりと思ってるけど。

情熱的でアジャイルなチームはまあ作ろうと思えば作れると思う。

でも、スプリントごとの会議に根気よく付き合ってくれるほど、本気でシステムが必要なんだ!というお客様ってどれくらいいるんだろう、と。

 一プログラマとしてはとてもワクワクする本で、読み進めるたび、本を閉じるたび、「わ~~!私もテスト駆動開発でバリバリ書きたい~~!!」とか思うんですけど、私の中の営業さんやプロマネさんが「いやいやこんなお客さんどこで見つけて来いと? たいていの人が、自分が欲しいものが曖昧なところに既存のパッケージ組み合わせてなんかそれっぽいもの持ってこられたら、値段同じならそっち買っちゃうでしょ」って斜に構えてしまう。

 

アジャイルサムライ』で書かれていることはめちゃくちゃジェネラルだ。ウォーターフォールの現場でだって、本に書いてある内容、例えばお客様先にそこそこ動くモックを持って行って意見を聞いたり、用語集を作ったり、やることリストを共有したりしていると思う。既にモノが出来上がっている組み込み開発とかでなければ、ある程度柔軟に動く現場の方が多いんじゃないでしょうか。しらんけど。

ウォーターフォールアジャイル、決定的に何が違うかといったら、「バスの運転手がお客さん」であることで、そうさせるためには契約形態を考えないといけないじゃん請負のとこが多いのにそんなのアジャイルでやってますって言える!? というのが胡散臭く感じることの正体なんだなって今回よくわかりました(感想)。

 
契約形態メモ 

請負契約とは、企業などが業務を委託する際の契約形態の一つで、受注者が仕事の完成を請け負い、発注者が完成した仕事に対して報酬を支払う契約のこと。

請負契約は仕事の完成を目的とし、受注者は納期までに委託された業務を完遂して成果を発注者に引き渡す義務を負う。仕事の進め方についての指揮命令権は受注者側にあり、発注者が直に管理・監督することは認められない。

 

準委任契約とは、企業などが業務を委託する際の契約形態の一つで、(法律行為以外の)業務の遂行そのものを委託するもの。民法656条などで規定されている。

業務委託には「請負契約」と準委任契約がよく用いられるが、請負契約は仕事の完成を目的とし、受注者は委託された業務を完成・完了させて成果を発注者に引き渡す義務を負う。一方、準委任契約は業務の遂行そのものが目的で、仕事の完成などの義務は生じない。

「仕事の完成の義務が生じない」って怖すぎない!?!? でもアジャイルでやると結局完成しませんでしたとかまあある話…?

 

システムエンジニアリングサービスとは、システムやソフトウェアの開発・運用などで行われる委託契約の一種で、対象物の完成などを目的とせずに特定の業務への技術者の労働の提供を行う契約。提供元企業の従業員が客先のオフィス常駐して技術的なサービスを提供するもの。

労働法規などでは業務請負の一種とみなされ、労務管理や指揮命令系統などが発注元企業から独立している必要があるが、具体的な成果物をはっきり定めず漠然と労働力を提供する委託形態のため、実態が派遣労働と変わらず偽装請負と見られる事例も多いと言われる

 多分これがお客さんまで巻き込んでめっちゃアジャイルできるやつ…でも契約内容に別にお客さんが協力してくれるとかは盛り込まれてない。

 

IPA/SECが提案している日本のアジャイル向けの契約形態というのが下記の模様。

基本/個別契約モデル
プロジェクト全体に共通する事項につき、基本契約を締結する。その後、小さな単位(機能単位、リリース単位等)ごとに、開発対象と費用がある程度確定したタイミングで、個別契約(請負/準委任)を順次締結する。  

スプリントごとに個別契約ってことですかね。 

契約内容に「相互協力の義務付け(基本契約5条)」や「頻繁な連絡協議会の開催(基本契約6条)」が盛り込まれており、相手方への協力義務違反に法的責任が生じたり、
相手方からの問い合わせには速やかに応答するなどが定められています。また、「変更協議が調わないまま一定期間が経過した場合には、個別契約を解約できる」など、モノが出来ない場合のお客さん救済措置もあります。

 

実際私が経験したアジャイル開発はSES契約でした。お客様からGOサインが出るまで作業できなくてニート状態だったの辛かった…。

 

変化、改革のないアジャイルアジャイルじゃないので、ウォーターフォールの現場でも入れれるところ(カンバンとか作ると終わった作業がよくわかってモチベあがりそうだし、レトロスペクティブでピザ頼んだりできたら最高)入れて行けたらいいよねぇ。

一番好きだなとおもったのはペアプロです。女子同士でやったからめちゃくちゃ盛り上がった。