myam314のブログ

備忘録、めも、日記など。

2016年の抱負めも

2016年になったので、新年の抱負を立てます。

社会人になって3年目になりますが、普通の技術者といった感じで、大して活躍できていない気がします。

何のために東京に出てきたのか、何がしたいのか、誰のために働くのかをもっと真剣に考えて、
人生悔いないような生き方をしたいと考えています。
だらだらと働いて過ごしていても…僕一人での生活はできるかもしれませんが、家族を守ることはできません。
今年は、精神的にも肉体的にも経済的にも、家族や周囲の人を守れるような強い人間に成るために、
「自分の強みをつくる。」年にしていきたいと思います。

僕には行動力が欠けているので、行動力をつける必要があります。
「自分の強み」ができれば、もっと積極的に行動ができると思うのです。

今年は1つ、「Webに強くなる。」をテーマに仕事をしていきたいと思います。
2016年1月3日今現在、僕がWeb業界で働いている中で、複雑多岐なWebの世界に課題を感じています。
そしてその業界の幅広さに圧倒されて自分の位置や役割を見失うときすら多くあります。
だからこそ、Webの素養を身につけて、それを自分の強みにして活かしていきたいと思っています。

などなど…

Webには本当に色んな構成要素が詰まっていて、それを組み合わせるパターンも莫大です。
変化も激しくて常に勉強して追っていかないと、何が最適解なのか、1人ではまずわかりません。
情報をシェアするだけでも、チーム内・チーム間・会社内・会社間・業界内・業界間と、色んなスコープがあってその情報の質もまちまちです。


自分の強みをどこにコミットするべきなのか、それを見つけることができれば上出来だと思っています。
今年は社会人4年目の年になります。まだまだ未熟で大した役割も担うことができないかもしれませんが、
今後のビジョンを見失わないようにするためにも、適度に振り返りをしていきたいと思います。


具体的な目標はこんな感じです。
細かいところは変わることがあるかもしれませんが、適宜修正して良くしていきたいです。

  • Webの本を読む。
  • フレームワークを勉強する。
  • 他社、他業種の方とも交流をもって情報交換する。
  • ネット上でのコミュニケーションを大切にする。
  • (やっぱりコード書くことが好きだから) Javaプログラマーのプロになる。LLではJavaScriptRubyが普通に書けるようになる。


ただただ人生としての今年の目標を立てようとしたのだけれど、結局エンジニアの目標になってしまいました。
どうやら、仕事大好きみたいです。
今年もよろしくお願いします。

checkinstall による RPM作成メモ

checkinstall

RPMを作成する方法に、rpmbuildコマンド と checkinstallコマンド がある。

rpmbuild

  • メリット

RPMに含めたいファイル構成や、その他パッケージ情報を詳細に定義できる。
RPM情報を自分の好きなようにカスタマイズできる。

  • デメリット

パッケージ情報やビルド・インストール手順を記述したSPECファイルを作成する必要があっていろいろと手間がかかる。
柔軟性が高い分、すべて自分でSPECを記述しなければならない。



checkinstall

  • メリット

ソースインストール結果をもとに自動でSPECファイルを記述してくれる。
パッケージ情報もある程度はカスタマイズできる。

  • デメリット

自動でSPECを記述するので、ブラックボックスな部分があって動きが読みづらい。
checkinstall の動きを正確に理解できていれば、使いこなせるかも)



個人的には、パッケージに含めるファイル数が多い場合には checkinstall で自動化したほうが楽で、ファイル数少ない場合は地道にrpmbuild でオレオレSPECを書くほうがSPECの理解にもつながっていいのかなって感じ。

今回は、checkinstall コマンドによる RPM作成方法について説明。

checkinstall コマンドについて

#checkinstall --help
checkinstall コマンドの使い方をみてみると・・・
---
使いかた: checkinstall [options] [command [command arguments]]
---

↑こんな記述があった。


デフォルト(引数なし)だと、checkinstall によって make install コマンドを実行した結果をもとに SPECファイルを作成して rpmbuild による RPM作成を自動で実行してくれるよう。
ただ、これだと インストール方法が make install ではない場合には checkinstall を使っての RPM作成ができないじゃんということになってしまう(と思っていた)。

そこで、checkinstall の引数に実行コマンドを引き渡すと、そのコマンドを実行した結果を元に SPECファイルを作成してRPMを自動作成して・・・という流れをやってくれるみたい。
なので、例えばmake install でのインストールだけじゃなくて、./install とか他のインストールコマンドの場合でも checkinstall による RPM作成ができる。

checkinstall 標準的な使い方

RPM化したいソースを準備
②ソースをコンパイル
checkinstall + インストールコマンド 実行

checkinstall 小技

RPM化したいソースを準備
②ソースをコンパイル
③ソースインストール実行(実際に実行してしまう)
④適当な作業ディレクトリを /(root) とみなしてインストールしたいファイル構成を作成
⑤ファイル構成をまとめて tar ball に圧縮
⑥"checkinstall tar zxf xxx.tar.gz -C /" を実行
※tar zxf xxx.tar.gz -C / というコマンドで、xxx.tar.gz を /(root) に展開するので、
checkinstall はこの展開結果をもとに tar.gzの中のファイル群を展開(=コピー=インストール)してくれるようなSPECを作成してくれる。

これが結構便利で、インストールしたいファイル群が多くてSPECを自前で書くのが面倒な場合は、
ファイル構成を作ってしまってから checkinstall を実行することで自動で SPEC作成といった手順を踏んだ方が早いことがある。



と、非常に雑な説明になっているけれど、
自分用に忘れないようにメモ。

checkinstall 導入メモ

checkinstall ソースインストール&RPMパッケージ化手順

対象: CentOS6.4/RedHat6.4

手順①: git の yum インストール (インストール先リポジトリは OS デフォルト base)

# yum install git

手順②:git プロキシ設定

# git config --global http.proxy http://[プロキシユーザID]:[プロキシパスワード]@[プロキシURL]:[プロキシ解放ポート]

手順③:checkinstall.git の clone を構築

# git clone http://checkinstall.izto.org/checkinstall.git

手順④:checkinstallコンパイル実行

# cd checkinstall
# make

手順⑤:checkinstall の インストール実行

# make install

手順⑥:rpm-build の yum インストール(インストールリポジトリ OSデフォルト base)

# yum install rpm-build

手順⑦:rpmbuild の環境構築のため、yum-utils と rpmdevtools を yum インストール (yum-utils:updates, rpmdevtools:base)

# yum install rpmdevtools yum-utils

手順⑧:rpmbuild の環境構築(参考:http://qiita.com/IK12_info/items/bcf695460363bae87eb9

# rpmdev-setuptree
※ RPM作成(rpmbuild)の環境構築を行います。
  ~/rpmbuild 以下に {BUILD  RPMS  SOURCES  SPECS  SRPMS} が構築されてあればOKです。

手順⑨:checkinstallRPMパッケージ化

# checkinstall -R

手順⑩:手順⑨で作成した checkinstallRPMcheckinstall-xxx-1.x86_64.rpm」 のRPMインストール

# cd /root/work/checkinstall
# cp /root/rpmbuild/RPMS/x86_64/checkinstall-xxx-1.x86_64.rpm  /root/work/checkinstall/
# rpm -ivh checkinstall-xxx-1.x86_64.rpm

なんで CentOS6.5 に標準で emacs が入っていないのか

CentOS 6.5

なんで emacs が標準で入っていないのか
emacs 離れの原因

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
emacs i686 1:23.1-25.el6 base 2.0 M
Installing for dependencies:
emacs-common i686 1:23.1-25.el6 base 18 M
libXaw i686 1.0.11-2.el6 base 190 k
libXpm i686 3.5.10-2.el6 base 50 k
libotf i686 0.9.9-3.1.el6 base 78 k
m17n-db-datafiles noarch 1.5.5-1.1.el6 base 717 k

Transaction Summary
================================================================================
Install 6 Package(s)


お客様のサーバを触っていたりして、Centで作業する機会があったりするけれど、
emacs が標準で入っていないので、どうしても vi での作業になってしまう。
こういうのが emacs 離れの原因になっていると思う。

社外勉強会に参加して思ったこと

1.ノートPC必携

 勉強会で学んだことをメモに残すために、ノートPCやモバイルPCは必携だと思う。
 よくわからない点はインターネットで調べることができたりと、絶対にあった方が便利な気がする。
 あと、話の内容がつまらなかった場合などは、PCがあればある程度作業ができるので、暇つぶしの道具としてもいい。

2.Mac ユーザ率高い

 まずは Mac ユーザ率が非常に多いので、それ以外のPCを開くのには少し勇気がいる。
 一度だけハンズオンのセミナーに参加したことがあるが、その時は Mac ユーザが 9.5 割を超えていた。
 そしてみんなステッカーシール張り過ぎである。

3.勉強会を見つける "きっかけ" は twitter TL、FaceBook、IT情報サイト

 勉強会は色んなところが主催となって開催しているかもしれないが、そういう場所を提供するサイトがある。
 よく利用するものが connpass とか ATND とか Doorkeeper。
 - connpass → http://connpass.com/highlight/
 - ATND → http://atnd.org/
 - Doorkeeper → http://www.doorkeeper.jp/
 - Zussar → http://www.zusaar.com/
 - Peatix → http://peatix.com/

4.流行の技術の勉強会は速攻で予約が埋まる

 Docker, Immutable Infrastracture, Chef, html5j とかが熱い・・・。
 こういうセミナーを早めに予約できるように、サイトはまめにチェック。

5.セミナー始まったら退出しづらい

 いざセミナー始まると、興味ない話でも途中退席しづらい感じがある。登壇者に失礼だし・・・。
 全部が全部自分の聞きたい話というわけではないかもしれない。
 でもそんなときは、自分なりに勉強できることをインターネットで探しながら過ごすと良いと思う。 

6.twitter ハッシュタグで実況

 セミナー前にハッシュタグが公開されるので、twitter でつぶやける。
 参加していない場合は、ハッシュタグで監視してればどういう内容かわかる時もある。
 (登壇者が早口の場合は、twitter につぶやく(実況する)暇もなくてあまり流れていなかったりするけれど。)
 これをもう少し応用して、twitter の過去の日時を範囲指定して勉強会のハッシュタグで検索すれば、
 その時行われていた勉強会の内容を振り返ったりできて便利かもしれない。
 → ツイートのまとめ記事は toggeter 活用すればよいかも。 

7.Ustream等で動画配信されることがある

 この場合、その会場にいなくてもセミナーの内容がインターネットで見れるし、動画なので、後で気になる部分だけを振り返ったりといったこともできるのでとてもありがたい。
 最近観たのは、4/19(土)ニコ生での qpstudy 。インフラ1年目向けの講義内容とのことだったが、インフラ設計で注意すべき勘所の説明に注力していて、とても学びやすかった。ニコ生から質問出来たりもするので、その場に参加しているような感じだった。

8.セミナー後は、「さきほどの資料アップしました」 みたいな形でスライドが速攻でアップされる

 もしくはセミナー前にアップしてくれたりすることもある。こういう場合、先読みしながら聞けるのでとてもききやすい。
スライドが復習資料になる。
 スライドは簡潔に書かれていて説明がないとわかりづらい部分も多くあるため、"後でスライドを読んだときにどんな内容かわかるように" といった視点でメモを取っておくことのがおすすめかなぁと個人的には思う。

9.セミナー日の後は、内容がブログとしてアップされる。(ブログはだいたい"日"単位)

 速攻でブログ書いたりする方は、その分野の有識者だったりすることが多いから、
 twitterフォロワーも多く、拡散しやすい。
 そういう方をフォローしておけば最新情報をキャッチアップしやすい。
 次の勉強会情報も入ってくるという正の連鎖。

10.普段行けない色んな所に行ける!

 日本M○本社、G○○gle、 六本木ヒルズ等々・・・
 こういう滅多にない体験ができることが、楽しみの一つになったりする。

11.懇親会はコミッターになるための近道(?)

 実力があれば、懇親会を通じてその分野で活躍するだけの人脈を築くことができるかもしれない(正直、私自身大した人脈もないのでこんなこと言えないですが・・・)。
 ただ、それほどまでに気張らなくても、気楽な気持ちでその分野の中の人と会話をするだけでも、刺激になっていいのではとも思う。

12.ブログ書こうとトライするけど、なかなか書けない

 すごい方がブログで発信している姿を見ていると、自分もブログを書いていかなきゃなと思ったりするけれど、
 大して発信できるほどの技術もないし、本当にこんなブログ見られるのかという不安もある。
 なかなかやろうと思ってできていないのが現状だ。。

最後に・・・

 こういう勉強会を主催してくださる方々や、登壇してありがたい話を講義してくださる方々には本当に感謝しています。

Excel 備忘録

【 シート一覧表示】⇒【選択したシートへ移動】

 のマクロ

'■モジュール側
'シート一覧 Sub SheetView() UserForm2.Show End Sub

'■ユーザフォーム側 '初期設定 Private Sub UserForm_Initialize() Dim Sh As Object With ListView1 .View = lvwReport ''表示 .LabelEdit = lvwManual ''ラベルの編集 ' .AllowColumnReorder = True ''列幅の変更を許可 .FullRowSelect = True ''行全体を選択 .Gridlines = True ''グリッド線 .ColumnHeaders.Add , "_Name", "シート名一覧", 306 End With For Each Sh In ActiveWorkbook.Sheets With ListView1 .ListItems.Add Text:=Sh.Name End With Next Sh End Sub 'ListView 行ダブルクリック処理 Private Sub ListView1_DblClick() Dim fSelectValue As String
fSelectValue = ListView1.SelectedItem ActiveWorkbook.Worksheets(fSelectValue).Activate 'Unload UserForm2 UserForm2.Hide End Sub