Jenkins更新検証環境をDockerで作る

Jenkins・pluginの更新をする際に検証できる環境が欲しい!となったので、Docker上に構築したメモ

成果物

github.com

やりたかったこと

  • できるだけ運用環境と近い状態から以下の検証ができるようにする
    • Jenkins自体の更新確認
    • pluginの追加・更新確認

運用環境

Docker Hubからjenkins imageを探す

  ❯ docker pull jenkins/jenkins:2.138.3
  2.138.3: Pulling from jenkins/jenkins
  Status: Downloaded newer image for jenkins/jenkins:2.138.3
  docker.io/jenkins/jenkins:2.138.3

  # コンテナの中に入る
  ❯ docker run -it --name jenkinstest jenkins/jenkins:2.138.3 /bin/bash
  jenkins@88681d8f77c5:/$

  jenkins@88681d8f77c5:~$ cat /etc/issue
  Debian GNU/Linux 9 \n \l

Debian だったのでこれは🙅

  ❯ docker pull jenkins/jenkins:2.182-centos
  2.182-centos: Pulling from jenkins/jenkins
  Status: Downloaded newer image for jenkins/jenkins:2.182-centos
  docker.io/jenkins/jenkins:2.182-centos


  # 起動してみる
  ❯ docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.182-centos
  Running from: /usr/share/jenkins/jenkins.war
  webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")

  # warファイルから起動してる??

  # コンテナの中に入る
  ❯ docker run -it --name jenkins-update-test jenkins/jenkins:2.182-centos /bin/bash
  bash-4.2$ cat /etc/redhat-release
  CentOS Linux release 7.6.1810 (Core)
  bash-4.2$ echo $HOME
  /var/jenkins_home

war ファイルからの起動のようなのでこれは🙅

Centos 7 のimageにJenkinsをyumインストールする方法を試す

rpmを探す

Jenkinsインストール

Javaランタイムインストール

[root@b92d081ebab0 /]# yum -y install java-1.8.0-openjdk

Jenkins公式yumリポジトリの追加

[root@b92d081ebab0 /]# curl -o /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

[root@b92d081ebab0 /]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

[root@b92d081ebab0 /]# yum info jenkins
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
jenkins                                                                                  | 2.9 kB  00:00:00
jenkins/primary_db                                                                       |  35 kB  00:00:00
Available Packages
Name        : jenkins
Arch        : noarch
Version     : 2.263.1
Release     : 1.1
Size        : 64 M
Repo        : jenkins
Summary     : Jenkins Automation Server
URL         : http://jenkins.io/
License     : MIT/X License, GPL/CDDL, ASL2
Description : Jenkins is an open source automation server which enables developers around the world to reliably
            : automate  their development lifecycle processes of all kinds, including build, document, test,
            : package, stage, deployment, static analysis and many?more.
            :
            : Jenkins is being widely used in areas of Continous Integration, Continuous Delivery, DevOps, and
            : other areas. And it is not only about software, the same automation techniques can be applied in
            : other areas like Hardware Engineering, Embedded Systems, BioTech, etc.
            :
            : For information see https://jenkins.io
            :
            :
            : Authors:
            : --------
            :     Kohsuke Kawaguchi <kk@kohsuke.org>

rpmインストール

[root@b92d081ebab0 tmp]# curl -OL http://mirrors.jenkins-ci.org/redhat-stable/jenkins-2.204.2-1.1.noarch.rpm

[root@b92d081ebab0 tmp]# ls
hsperfdata_root  jenkins-2.204.2-1.1.noarch.rpm  ks-script-DrRL8A  yum.log

[root@b92d081ebab0 tmp]# rpm -ivh jenkins-2.204.2-1.1.noarch.rpm

[root@b92d081ebab0 tmp]# systemctl start jenkins
Failed to get D-Bus connection: Operation not permitted

Failed to get D-Bus connection: Operation not permitted エラー

Dockerのエラーのようなので、以下を参考にして対応

qiita.com

一旦削除してdocker runやり直し 特権モードで起動させる

❯ docker run -d --privileged --name jenkins-test centos:centos7 /sbin/init

❯ docker ps
CONTAINER ID   IMAGE            COMMAND        CREATED          STATUS          PORTS     NAMES
cd5af186cc01   centos:centos7   "/sbin/init"   28 seconds ago   Up 26 seconds             jenkins-test

❯ docker exec -it jenkins-test /bin/bash
[root@cd5af186cc01 /]#

## ~~java install, repository 登録, rpm install~~

[root@cd5af186cc01 tmp]# systemctl start jenkins
Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
[root@cd5af186cc01 tmp]# systemctl status jenkins.service
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sun 2021-01-03 14:45:56 UTC; 15s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 355 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)

Jan 03 14:45:56 cd5af186cc01 systemd[1]: Starting LSB: Jenkins Automation Server...
Jan 03 14:45:56 cd5af186cc01 jenkins[355]: /etc/rc.d/init.d/jenkins: line 59: /etc/init.d/functions: No s...tory
Jan 03 14:45:56 cd5af186cc01 systemd[1]: jenkins.service: control process exited, code=exited status=1
Jan 03 14:45:56 cd5af186cc01 systemd[1]: Failed to start LSB: Jenkins Automation Server.
Jan 03 14:45:56 cd5af186cc01 systemd[1]: Unit jenkins.service entered failed state.
Jan 03 14:45:56 cd5af186cc01 systemd[1]: jenkins.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

/etc/rc.d/init.d/jenkins: line 59: /etc/init.d/functions: No such file or directory エラー

以下と同じエラーだったので、同様の対応をしてみる

qiita.com

[root@cd5af186cc01 tmp]# yum provides */init.d/functions*

[root@cd5af186cc01 tmp]# yum install -y initscripts

[root@cd5af186cc01 tmp]# ls /etc/init.d/functions
/etc/init.d/functions

[root@cd5af186cc01 tmp]# systemctl start jenkins
[root@cd5af186cc01 tmp]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: active (running) since Sun 2021-01-03 15:04:01 UTC; 7s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 464 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
   CGroup: /docker/cd5af186cc0158a972d74dc63069144faa3849d05296134356de89d37a8f7a04/system.slice/jenkins.service
           └─493 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_...

Jan 03 15:04:00 cd5af186cc01 systemd[1]: Starting LSB: Jenkins Automation Server...
Jan 03 15:04:00 cd5af186cc01 runuser[469]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)
Jan 03 15:04:01 cd5af186cc01 runuser[469]: pam_unix(runuser:session): session closed for user jenkins
Jan 03 15:04:01 cd5af186cc01 jenkins[464]: Starting Jenkins [  OK  ]
Jan 03 15:04:01 cd5af186cc01 systemd[1]: Started LSB: Jenkins Automation Server.
Hint: Some lines were ellipsized, use -l to show in full.

起動🙆

Dockerfileを作る

以下を参考に作成

qiita.com

qiita.com

Jenkins updateを試す

  • サービスSTOP → yum install → サービスSTART
[root@localhost jenkins]# systemctl stop jenkins
[root@localhost jenkins]# yum install jenkins
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ty1.mirror.newmediaexpress.com
 * extras: ty1.mirror.newmediaexpress.com
 * updates: ty1.mirror.newmediaexpress.com
Resolving Dependencies
--> Running transaction check
---> Package jenkins.noarch 0:2.204.2-1.1 will be updated
---> Package jenkins.noarch 0:2.273-1.1 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================
 Package                   Arch                     Version                     Repository                 Size
================================================================================================================
Updating:
 jenkins                   noarch                   2.273-1.1                   jenkins                    66 M

Transaction Summary
================================================================================================================
Upgrade  1 Package

Total download size: 66 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
jenkins-2.273-1.1.noarch.rpm                                                             |  66 MB  00:00:09
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : jenkins-2.273-1.1.noarch                                                                     1/2
  Cleanup    : jenkins-2.204.2-1.1.noarch                                                                   2/2
  Verifying  : jenkins-2.273-1.1.noarch                                                                     1/2
  Verifying  : jenkins-2.204.2-1.1.noarch                                                                   2/2

Updated:
  jenkins.noarch 0:2.273-1.1

Complete!
[root@localhost jenkins]#
[root@localhost jenkins]# systemctl start jenkins

workspaceが空だと一瞬で終わる模様

Jenkinsのjob,plugin等のバックアップは

sue445.hatenablog.com

のバックアップスクリプトを利用させてもらっている。 そこのコメントに気になる記述がある。

JenkinsCIををrpmでアップデートすると、$JENKINS_HOMEをchown -Rする糞コマンド入っているので、workspace/以下を綺麗にしておくかexport JENKINS_INSTALL_SKIP_CHOWN=trueしておかないと何時間もupdate終わらんとかになる

実際に更新する際は、 export JENKINS_INSTALL_SKIP_CHOWN=true をしておくのがよさそう

バックアップデータからの復元でハマったところ

Error migrating users

バックアップファイルを解凍してjenkinsディレクトリにコピーすればOK
Docker imageの作成→コンテナ起動→jenkins起動は問題なかった
http://localhost:8080 にアクセスしてみると以下のエラーが表示され、ログイン画面がでない

java.nio.file.DirectoryNotEmptyException: /var/lib/jenkins/users/hoge
    at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:498)
    at sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262)
    at java.nio.file.Files.move(Files.java:1395)
    at hudson.model.UserIdMigrator.migrateUsers(UserIdMigrator.java:97)
    at hudson.model.UserIdMapper.load(UserIdMapper.java:184)
    at hudson.model.UserIdMapper.init(UserIdMapper.java:75)

users データの読み込みに失敗している?

/var/log/jenkins/jenkins.log も見ながら解消していく

2021-01-15 02:48:09.783+0000 [id=34]    INFO    hudson.model.UserIdMigrator#migrateUsers: Migrating user 'hoge' from 'users/hoge/' to 'users/hoge_6878077609320809469/'
2021-01-15 02:48:09.792+0000 [id=34]    SEVERE  hudson.model.UserIdMapper#load: Error migrating users.
java.nio.file.DirectoryNotEmptyException: /var/lib/jenkins/users/hoge
    at sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:498)
    at sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262)
    at java.nio.file.Files.move(Files.java:1395)
    at hudson.model.UserIdMigrator.migrateUsers(UserIdMigrator.java:97)
    at hudson.model.UserIdMapper.load(UserIdMapper.java:184)
    at hudson.model.UserIdMapper.init(UserIdMapper.java:75)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
    at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
    at jenkins.model.Jenkins$5.runTask(Jenkins.java:1121)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
2021-01-15 02:48:09.807+0000 [id=34]    SEVERE  jenkins.InitReactorRunner$1#onTaskFailed: Failed UserIdMapper.init

エラー内容を調べる

jenkins-ci.361315.n4.nabble.com

www.jenkins.io

In this case, rename the directory $JENKINS_HOME/users/admin_6635238516816951048/ to $JENKINS_HOME/users/admin/ while Jenkins is not running. Repeat this for all other user directories listed in the log. Doing all of the above will undo the partial migration. Jenkins will re-run it on the next startup.

対応する

このコメントを参考

stackoverflow.com

service stop → users/users.xmlの削除 or rename → service start → 古いユーザーcredentialのまま使う

users/users.xmlはバックアップデータに存在しなかったので、以下の方法で対応

  • バックアップのusersディレクリ名をusers_tmpに変更
  • 空のusersディレクトリを作成
  • jenkins service startする
    • この時点でJenkinsの画面が表示されるか確認。job等は復元されている状態
    • ログインユーザー情報がないので、ログインはできない
  • jenkins service stopする
    • users_tmpディレクト名をusersに変更
    • jenkins service startする
    • ログインできるか確認

おわりに

Dockerfileからのimage作成、コンテナ起動などはシェルスクリプトを作成した。

Dockerで更新検証環境を作ったことで、pluginを気軽に試したり更新したりできるようになりそう😋

リーダーになったけどやり方がわからな過ぎたので本を読んでいる

何の知識も経験もないまま昨年からチームリーダという立場になったので、「チームビルディング」等に関する本に目を通すようになった。
関連本を複数購入し、目を通すようにしていたがイマイチ頭に入ってる感じがしていなかった。

モヤモヤしていたところ、以下の記事を読んで自分に足りていない部分が理解できたような気がする。
「時間がない」ことを言い訳にして、本に目を通して終わっていた。
アウトプットもせずに頭の中になんとなくフレーズが残っているだけの状態だったので、今年はアウトプットをきちんとしていく年にしていこう〜 blog.shibayu36.org

やり方を真似させてもらい、「読書ノート」を公開するところから始めていく。

チームビルディングについて知る

チームをどう作っていこうかとても悩んでいて、1メンバーだった時とは考え方を変えていかないといけないなぁと感じている。
Kindle Unlimited を契約していることもあり、まずは以下の本を選んでみた。

"傾聴""存在を認める""任せる""横の関係" ということをまずは意識する必要があるのかなと

🗒読書ノート

📚超ホワイト仕事術

- どんなに素晴らしい「人事制度」「テレワークなどの働き改革を支える制度」や「働きやすいオフィス」をつくって、「制度の壁」と「物理的な壁」を打ち破ったとしても、最後は働く人の価値観、つまり「人の心の壁」がいちばん大きいのです。 位置291
- 仕事や働き方を「サイエンス」にするとは、自分の知識・経験を体系化するということ。 位置373
    - 🤔 「体系化」しておけば人が変わっても対応できるチームになれそう
- マネジャーにとって、「人材の育成」は、業績と同等、あるいはそれ以上に大切な仕事だということをあらためて認識することが大切です。一生のうち、残るものは、残したものではなく、与えたものです。 位置406
    - 🤔 「与えたもの」という考え方はしたことなかった
- マネジャーは、メンバー 1人につき、 3億円分の資産を会社から預かり、任せられているわけです。その資産を生かすも殺すも、マネジャー次第なのです。 位置419
    - 🤔 3億預かって運用していくイメージかな
- どんなに能力が高い人であろうと、低い人であろうと、その人の能力をいまより引き上げる。そこに好き嫌いの感情を持ち込まないようにすることが大切です。ベースとしてまず個人を尊重しながらやっていく、ということが基軸になるのです。 位置444
    - 🤔 ここが難しい。理解しているつもりだけど、好き嫌いの感情を気づかないうちに持ち込んでいる気がする
- 自分が 1カ月留守をしても、何事もないように回る組織をつくり上げることこそ、マネジャーの役割であり、価値 位置573
- 「デザイン思考」の本質は人間観察にあると考えています。「何かトラブルが起きていそうだな」と早く察知して、先手を打てば、問題が速やかに顕在化し、解決までの時間を短縮できるのです。 位置670
- ①マネジャーとしてメンバーのために使う時間 ②自分自身の業務のために使う時間 ③新しいやり方を考え、学ぶ時間 位置691
    - 🤔 時間を3分割するのいい。どうしても1つに集中してしまって、他が蔑ろにされてしまうことがある
- プロセスとは、目的を達成するための行動・考え方を文書化し、組織として実行して、目的が達成できることを検証した再現性ある仕組みのことです。ですから、その現場で働くメンバーたちの価値観を整理して共有し、全員に理解してもらうことで、マネジャーが代わっても回るプロセスができます。 位置795
    - 🤔 仕組みを作る
- 平均的にいえば、若いうちは「創造力」が高くて「判断力」が低く、ベテランになるほど逆に「創造力」が衰えてきて「判断力」が高くなってきます。 位置843
- 方向性を明確に示すことができないマネジャーでは、頼りなくてメンバーがついてきません。現状で会社の置かれている状況を説明し、「だから、いま大切なことはこれです。それに対して、われわれのチームはこうします」と言えばいいのです。 位置1147
    - 🤔 これは今年からやろうと心がているところ
- 上位 2割のできる人を「卒業」させ、同時に下位 2割のできない人は、自分が責任を持って育てる。これが原理原則です。 位置1234
- すべてを聞いて、真実を完全に把握してから、次のステップとして感想や意見を伝えたり、対策を考えたりするのです。「聞く」タイミングと「話す」タイミングは、明確に分けるのがコツです。 位置1515
    - 🤔 最後まで「聞く」ということはやってなかった気がする
- タスクの量は、デッドラインによって変わる 位置1591
    - 🤔 どうしてもデッドラインを先延ばしにしてしまうところがあるから気をつける
- 80%までできた時点で、他のメンバー、あるいはマネジャー自身が一緒になって、「ここはこうだね」「こうしたらもっとよくなるね」とコミュニケーションしつつ100%に仕上げていくのです 位置1610
    - 🤔 ここは今年強化していきたいところ
- 「プレゼン」よりも「議論」に時間をかけるべき 位置1659

📚チームを変える習慣力

- 生産性は「どれだけ良質な卵をどれだけたくさん生み出せるか」です。一方、効果性は「卵を生み出す鶏が心身ともにいかに健康で、その生産能力をいかに成長させているか」ということです。 位置289
    - 🤔 「効果性」を上げることを考えると
- 自分が相手に貼っているレッテルに気付いて、それをいったん白紙にしてみることです。そんなことを意識してみると、やがて、あなたがあなた自身に貼り続けている沢山のレッテルにも気付いていくでしょう。 位置884
    - 🤔 無意識にレッテルを貼っている部分があるので、それを白紙にしてみよう
- この力を磨く研鑽を怠ると、残念ながら、多くの人が 40代でゲームオーバーとなってしまいます。プレイヤーとしての価値は目減りしていくのに対し、逆に給料は上がっていく。これでは会社としては、効率の良くない投資になっていってしまいます。知識もアイデアも若い世代の方がむしろある、マネジメント力もない、これでは会社として給料を払う価値がなくなってしまうわけです。 位置945
    - 🤔 これは確かにそうで、実際に問題として上がっている部分ではある。。
- 古いクセを変えるには、新しい習慣をつけるのが一番なのです。 位置977
- マネージャーという立場としては、部下のことについての無知なのは、マネージャーとしての評価においての致命傷になります。 位置1216
    - 🤔 メンバーのことを知る努力をしていく
- 相手のことが嫌いであったり、受け容れ難かったりするときほど、相手のことをもっと知ろうとすること、これが重要です。 位置2011
- 必要以上に相手に介入することは、その人の自主自律性を損ない、自分の力で人生や仕事の問題を解決する力を失ってしまう結果になるからです。 位置2207
    - 🤔 塩梅が難しい

📚やる気を引き出し、人を動かす リーダーの現場力

- 先に相手のやりたいことを叶えていく姿勢 位置621
- 「リーダーの仕事はスーパーマンのようにすべてを一人でこなすことじゃないんだ 」 位置875
    - 🤔 これは肝に銘じておきたい。自分で全部決める・やろうとしないこと
- 口では 「任せる 」と言って結局は口 、最終的には手まで出してしまうマイクロマネジメントパタ ーン 。もうひとつが反対に 、任命だけして放置し 、社員が潰れてしまう丸投げパタ ーンだ 位置1354
    - 🤔 これやりがちなので気をつける
- ・ビジョン どの山を登るか (大きく目指すもの ) ・戦略 どのルートで登るか (ビジョンを達成するための方法 ) ・戦術 そのルートをどうやって登るか (戦略を実行するための具体的な方法 ) 位置1793
    - ビジョン:日本一の寿司職人になる 戦略:銀座で自分の店を持つ 戦術:日本酒に詳しくなることで他の職人と差別化を図る
    - 🤔 これわかりやすが、戦略と戦術の違いがイマイチ理解できない

📚コーチングのプロが教える 「ほめる」技術

- ほめることは技術です 。 位置39
    - 🤔 無闇矢鱈に褒めればいいというものでもないからそうか
- やはり 「任せる」はスーパーアクノレッジメント 位置419
    - 🤔 「任せる」の塩梅がまだわからない
- コーチングの哲学を表現するフレーズの一つに 「答えは相手の中にある 」というのがあります 位置545
- 意見を求めるというのは 、その相手に対する大きなアクノレッジメントです 位置570
- 若い人をアクノレッジする際に 、中でも特に大事なのが 「理由 」という情報を伝えてあげることです 位置1305
    - 🤔 これは意識的にやっている部分でもある。「なぜなら〜」というのは話すようにしているつもり

ザ・コーチ -最高の自分に出会える『目標の達人ノート』-を読んだ

「1日30分」を続けなさい!に目標設定の話が出ていたのですが、具体的にどうやって目標を設定したらいいのかわかりませんでした。なので、目標設定について参考になればと思い本書を読んでみました。  

小説のような書き方になっていて、主人公と一緒に目標設定について学ぶことが出来る本です。
「目標」という言葉の意味や、どのように目標を設定して活用していけばいいのか、ということがわかりやすく書かれていました。

ザ・コーチ

ザ・コーチ

gawao.hateblo.jp

「目的・ゴール・目標・夢・ビジョン」の意味

  • 目標を掲げる人は多いが、本当の意味で目標を活かしきっている人は少ない
  • 目標とは何かについて学習をしていない。学校では教えてくれない
  • 目的
    • 成し遂げようと目指す事柄
  • ゴール
    • 目的のための最終的な目印
  • 目標
    • 目的を達成するために設けた目当て
    • 目的に向けての目印
    • ゴールまでの途中の目安や通過点
    • 将来実現させたいと、心のなかに思い描いている願い
    • 目標ではなく、あくまでも願望
  • ビジョン
    • 将来あるべき姿を描いたもの
    • 頭のなかで思い描いた光景を見るだけで感情が湧くもの
    • ゴールに向けて行動するための強化剤

「目的・ゴール・目標・夢・ビジョン」という言葉の意味について考えたり調べた事はありませんでした。
今までは、何となく「目的=ゴール=目標」だと思っていましたし、「夢」は壮大なものでないといけないと思っていました。

「目的、ゴール、目標」の3つが揃って初めて目標をたてることの効果が生まれるそうです。今まで何となく立てていた「目標」が守れていなかったのは、「目的、ゴール」を考える事をせずに「ノルマ」として「目標」を考えていたからかもしれません。

本書では、”「夢」を書き出してその中からどうしても実現したいと思う事について、「目的、ゴール、目標」を決めて行動を初めて見ると良い”とありましたので、夢(願望)を書き出すことから始めてみようと思います。

「目的・ゴール・目標・夢・ビジョン」を明確にして行動していくことで得られる恩恵

  • 共感者や協力者との出会い
  • 人間的な成長
  • 人生で見る景色が変わる

他にも沢山ありました。いいことしかないじゃないか!本当かなぁ。。
自分のやるべきことを明確にして行動していくので、ゴールを目指す過程で成長していけるという事だと思います。
自分の信じる道を突き進んでいる人は魅力的ですよね。
何事も行動してみないとどうなるかわからないな、と改めて思いました。

「目的・ゴール・目標・夢・ビジョン」の設定

  • 生きがいや、やりがいにつながる目的とゴールをセットで設定
  • 目的はゆるぎなく、ゴールを手にする方法は無限にあると知り目標は柔軟に
  • 目標≠ノルマ(行動計画)
  • 目標はあくまでも通過点
  • ゴールを構成している要素を分解し、期日・量・基準を盛り込んで目標を立てる
  • ゴールや目標を表す言葉は、自分の価値観に合う言葉で表現
  • 自分の行動特性を見極めて行動計画を立てる

目標設定から行動計画の立て方まで、具体的な方法が書かれていました。
一番上に目的を置いた「ゴールツリー」を作り、その下に目的達成のために必要な複数のゴール群、さらにゴール群の下にそれぞれのゴールを細分化した要素群がつながります。

まとめ

とても読みやすい本でしたし、「具体的にどうやって目標を設定し、行動にうつしていくのか」という問に対するヒントが得られました。

「1日30分」を続けなさい!の目標設定の話と重なる部分も多く、本書を読んだ上で読み返すとまた新しい発見ができそうです。あとは行動あるのみ。。。全てを実践しようとすると結構時間がかかりそうですが。

本書の主人公は、3年後に新しい山(目的・夢)が見え、5年後に本をだします(!)。主人公の成長と、物語の最後のシーンに涙しました。

「1日30分」を続けなさい!を読んだ

勉強やブログなど、全く続かずに中途半端になっている状況から脱却したいなぁと思っていた時にこの本が紹介されているのを目にしたので読んでみました。
筆者の経験から導き出した勉強を続けるための方法、勉強することの大事さが書かれている本です。
中長期的な目標から短期目標まで設定し、それを達成するためには勉強を習慣化することが大切だという事が書かれていました。

勉強の習慣を身につける

  • 毎日30分や1時間でいいから習慣化
  • 勉強とは、読書を含め一段階高いレベルに向上させるあらゆる活動
  • 毎日が重要
  • 成功・不成功を繰り返し、少しずつ習慣を身につける

学生時代から勉強の習慣は全くありませんでした。テスト前に一気に勉強するタイプ。
大人になってからは、学生時代よりは勉強をしているつもりなのですが習慣化は出来ていません。
「毎日コードを書こう」「毎日本を読もう」などと目標を立てるものの、実現出来ていませんでした。毎日長時間勉強しようと思っていたので続かなかったのかなぁと思いました。
毎日決まった時間に勉強することをルーティンに入れて習慣化出来るようになりたいです。

効率よく知識を吸収する

  • 身銭を切る
  • 勉強したことは、後日誰か他の人に教えるつもりで勉強する

自分のお金で本を買ったりセミナーに参加すれば、勉強に身が入るということ。
人から借りたり図書館で借りるのがあまり好きではないので、読みたいなと思った本はすぐに買ってしまいます。ただ、読まない、、、。本の量だけ見るとものすごい知識量のはず。今本棚にある本の8割は読んでいない気がします。身銭を切っても知識を吸収していない悪い例。来年は本の読み方、買い方も考えていきたいと思います。

人に教えると自分もより理解出来るというのは前から言われていることだと思います。人に教える機会がない場合でも、ブログにアウトプットすることで知識が定着するはずなので、ブログを、、ブログを書こう。

勉強時間の捻出

  • テレビを見なければ2ヶ月分の時間を捻出出来る
  • 早朝や残業時間帯
  • 通勤時間

「テレビを見ない」という考えは今まで持ったことがなかったので驚きました。
言われてみれば、ぼーっとテレビを見ている時間がとても多いです。
パソコン開いてネットサーフィンしながらテレビを垂れ流しているのですが、何の生産性もない時間だなぁと。
全く見ないのは無理なので、少しずつテレビをBGMにしていた時間を勉強の時間に割り当てられたらいいなと思います。

残業時間帯は勉強、、うーん。今まで残業が多い会社ばかりだったので、なかなか難しいです。やるなら早朝にしたいと思いました。目指せ朝型。

通勤時間帯は座ることが出来れば本を読むのに絶好の時間かと思います。が、スマフォでゲームしてネット見て寝て終わっているのが現状です。意識を変えていかないとこの辺は実践できないですね。

勉強に集中する

  • 集中力はせいぜい30分
  • 比較的短い時間の勉強 -> 休憩のサイクルを繰り返す
  • 勉強が嫌になる前に勉強を一時中断する
  • 集中力が落ちたり、飽きたら即刻勉強を中止する

ポモドーロ・テクニックに通じるものがあるな、と思いました。仕事で少し試したことがあるのですが、その時はうまく活用出来ませんでした。やり方がよくなかったと思います。
試しに、本書を読む時に「30分読む->15分休憩」を繰り返してみました。本を読んでいるといつもは途中で飽きてしまい、本の内容が全く頭に入ってきていませんでした。この「読む->休憩」の方法を試してみると、飽きることなく集中して読むことが出来たと思います。
長時間机に向かっていても何も頭に入らないのは集中力が続いていなくて飽きているからですね。ぼんやりとはわかっていましたが、「机に向かっている時間が大事 」という意識のほうが強かったので、改善して集中出来るようにしたいと思いました。

目標設定方法

  • 先に最終目標を描いてから目標を細分化
  • 何のために勉強し、いつまでに勉強の成果を出す必要があるのか、ということを紙に書き出して視覚的にチェック
  • 目標があると行動が変わる。行動が違えば成果が大きく違う

期日を含めて明確にゴールを決めておいてから、中期目標、1日目標を設定していくといいそうです。
「◯◯できたらXXする」という目標しか今までしていなかったかもしれません。
ゴールを決めていたとしても、期日までは決めていなかったり。
目標を設定していても、その目標を達成するためにどのように行動するか、までは考えたことがないと思います。この「どのように行動するか」を意識するようになるだけで、日々の勉強の成果が変わってくる気がしました。

まとめ

実体験にもとづいている本なので、説得力があるように感じました。 英語を身につけるための勉強量が半端ない。本気で勉強していないので、英語が身につかないはずです。
全く同じことは出来ないけれど、「勉強の習慣を身につける」「勉強に集中する」「目標設定」については大変参考になることが多く、自分の意識を変える手助けをしてくれたと思います。何度も読み返して習慣化の意識を忘れないようにしたいと思います。
まずは目標設定から、、少しずつ少しずつ。

はてなスペース終わってしまうのですね

space.hatenastaff.com

ついさっき知りました。。。 サカナクションのスペースを作って遊んでいました。

久しぶりに覗いたら、スパムみたいのが大量に投稿していてびっくりです。

iPhone5sをiOS9にアップグレード!。。出来ず

OSXYosemiteにしたついでにiOS9にしたらアップグレード出来ませんでした。。(泣)

iPhone5s /iOS7。
iOS8には上げずにずーっと放置していたのですが、OneNoteのアプリを使いたくてアップグレードすることに。
ちらっと調べた感じだと、iPhone5sでのiOS9の動作には問題なかったようなのでアップグレードしてみたところ、無事にアップグレード完了!と思いきや スライドでアップグレード という文言が表示されて全く反応せず。。。
Twitter上でも同じ不具合の方が沢山。

寝て起きたら治ってる事を期待しつつ寝て起きたわけですが、当然何も解決しておらず。。

色々調べていた所、こちらにたどり着きました。

www.reddit.com

取り敢えずiPhoneを使えるようにするために、一番上にあるコメントの通りに 8.4.1 を入れることに。
自分のiPhoneiPhone 5s(GSM) だったのでこちらをダウンロード。

記述通りに進めていき、DFUモードにしてoptionキーをクリックしながら復元をクリック。
ダウンロードしたファイルを選択して復元。
しばらく待つとアクティベート画面が出ました。

アクティベートして、保存していたバックアップから復元を試みました。(バックアップ取っておいてよかった。。)

見事復活!!!!ε-(´∀`*) iOS 8.4.1 になってました。
ゲームのデータを心配していたのですが、無事でした。よかった。

iOS8.4.1からiOS9へのアップグレードは問題ないようですが、ちょっと怖いのでもう少し様子を見ることにします。

DayOne Syncも出来るようになったし、 Score! Hero (サッカーゲーム)も進められるようになりました。
OneNoteのアプリも入って快適。

取り敢えずこれで外に出れます。

この一件でiPhoneへの依存度がすごいと思い知らされました。
目覚まし、時計、乗り換え、地図、連絡先、予定、、、ないと外出出来ない(´・ω・`)

何か対策考えないとー


最近はcocos2d-jsを使ったお仕事しています。もうあっぷあっぷして泡吐きながら仕事しています。がんばろう。

LINEスタンプ売上と統計情報

LINEスタンプが承認されてから1ヶ月が経過したので、売上と統計情報を見てみた。

LINEスタンプがやっと承認された!! - gawaooooo.blog

売上レポート

2月

f:id:gawao:20150403150144j:plain

  • 2/27日リリース
  • 自分で購入した分と友達が買ってくれた分。ありがとうございます

3月

f:id:gawao:20150403150210j:plain

  • 3月前半は友達の知り合いの方が買ってくれたとのこと。ありがとうございます
  • 3/31に異変が!3個位売れている・・・一体何があったのでしょうか

4月

  • 売れてません(^^)

統計情報(送信スタンプ数)

f:id:gawao:20150403150233j:plain

  • 3/1〜4/2までのエリア別の送信スタンプ数を見てみると、3/31に台湾で使われていることがわかった
  • 3/31の売上は台湾の方!(多分。ありがとうございます。)
  • 3/31→88個、4/1→177個、4/2→101個と結構使ってくれているみたい。ありがとうございます。ありがとうございます。

売れないのでしばらくレポートを見ていなかったのですが、久しぶりに見たら売れていて嬉しいです。
台湾の方(多分)が使ってくれている事が嬉しい!!
私立恵比寿中学さんのファンの方かな?違うかな?どっちでもいいけど嬉しい!
お友達が作ったスタンプも無事に承認されたようなので、売れるといいなぁ。

チュー犬も絶賛販売中⊂゚U┬───┬~

チュー犬 - LINE スタンプ | LINE STORE