[書籍] プログラムはなぜ動くのか

プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識 | 日経BOOKプラス
https://bookplus.nikkei.com/atcl/catalog/21/S00190/

プログラムがコンピュータの中でどのように動作するのかを、誰にでもわかるように説明します。プログラムは、メモリーにロードされ、CPUによって解釈・実行されます。その仕組みを、多数の図を使って、順序だてて解説します。

本書の特徴
◆プログラムの成り立ち、動作の仕組みを説明…基礎知識をきちんと解説!
◆メモリーについて充実した説明…プログラマの必須知識をしっかり解説!
◆HW、OS、アプリ、クラウドなど動作環境を網羅…実践・実装知識も解説!


電子版にて読了。コードさえ書ければプログラマだと思っている「自称プログラマ」向けの教材探しをしている中で出会った一冊。自動車の仕組みを知らなくても運転はできる。だけど、自動車の仕組みを知っていたほうが、その能力を上手く引き出せる運転ができるはずだ。プログラミングも同じこと。データはコンピュータ内部でどのように保存されて処理されるか、コードはどのような形態に変換されて最終的に実行されるか、知っていた方が効率的で綺麗なコードが書けるはず。

情報工学の概論で学ぶようなことを寄せ集めたような一冊だが、基礎が無いプログラマには役立つだろう。筆者の守備範囲によるのか、テーマごとに説明の粒度にバラつきがあるのはご愛敬。

[書籍] インスタグラム: 野望の果ての真実

インスタグラム: 野望の果ての真実
https://publishing.newspicks.com/books/9784910063188

ビジネスと「美意識」は両立できるか? 「王者」フェイスブックの傘下でもがくインスタグラム創業者の、理想と決断、そして裏切り。100%の共感に満ちた、教訓満載のビジネス・ノンフィクションの頂点。


電子版にて読了。ユニークなアイデアを持って産声を上げたスタートアップが大企業に買収され、さらに力をつけて世界的に認知されるサービスへ成長していく、といったストーリーを想像して読み始めたのだが、どうも違う。インスタグラムがユニークな写真アプリで創業したところまでは意気揚々としたストーリー展開なのだけれども、フェイスブックに買収された後のストーリー感が良くない。買収によって金銭的なメリットをもたらされたのは僅か数名に過ぎず、カンパニーカルチャーその他の違いが障壁となり、インスタグラムは苦難の途を歩んでいくことになる。

フェイスブックの強い企業カルチャーも随所に見える、興味深いドキュメンタリーだった。

[書籍] やる気に頼らず「すぐやる人」になる37のコツ (大平信孝)

『やる気に頼らず「すぐやる人」になる37のコツ』 大平 信孝/著 – かんき出版
https://kanki-pub.co.jp/pub/book/details/9784761275723

~ こうなってしまうのは、あなたの性格や能力のせいではありません。脳が、面倒くさがっているだけなのです。脳の仕組みを理解し、行動スイッチの入れ方を知れば、誰でも自分を動かすことができるようになります。よく、「やる気は出ない」という人がいますが、「やる気」は行動した後にしかついてきません。やる気に頼っていると、永遠に動くことはできないのです。本書では、アドラー心理学や脳科学に基づいた、「やる気に頼ることなく自分を動かすためのコツ」を豊富なイラストを交えながら紹介します。


電子版にて読了。この類の本は、読んでみると当たり前の内容ばかりで、とくに目新しいことは無いことが多い。この本も類に漏れず。しかし、それが1冊の本として系統づけて整理されて書かれていると説得力が大きい。本書全体を通して内容がシンプルなのが良かった。「そんなことは言われなくても解ってるさ」という意地を張らずに、直な気持ちで読んでみると妙に納得するだろう。

最終章の「夢や目標に向かって一歩踏み出せる!行動思考の身につけ方」の内容は、人生計画やビジネスプランを立てる時の助けにもなるかもしれない。生産性に伸び悩むことがあれば、再び手に取って眺めてみたい。

[書籍] 忘れる読書 (落合陽一)

忘れる読書 (PHP新書) | 落合 陽一 | 個人の成功論 | Kindleストア | Amazon
https://www.amazon.co.jp/dp/B0BK8G3QK7/

デジタル時代の真の教養を身に付ける本の読み方
古典から哲学・理工書・小説まで落合陽一をつくった27冊を紹介


電子版にて読了。ザッピング読み。

著者は今の時代に読書をする意味を以下の3つとしている。

  • 思考体力をつけるため
  • 気づく力をつけるため
  • 歴史の判断を学び今との差分を認識するため

知見を得るためというよりも、むしろ思考のトレーニングのため、ということなのだろう。確かに、ネットの記事を拾い読みするよりも、系統づけた議論を提供してくれる本を読むほうが、思考が鍛えられるように思える。

読書をテーマに本を一冊書ける著者のネタ量・思考力にも感心した。

[書籍] こうして社員は、やる気を失っていく

こうして社員は、やる気を失っていく – 日本実業出版社
https://www.njg.co.jp/book/9784534059215/

社員のモチベーションを高めるためにすべきは、まず「モチベーションを下げる要因」を取り除くことである。「社員がやる気を失っていく」には共通するパターンがあり、疲弊する組織や離職率の高い会社の「あるあるケース」を反面教師に、改善策を解説。


電子版にて読了。最近目にした会社の雰囲気が悪く、なんだかなーと思っていた時にこの本を見つけて即購入。まるでその会社のことを書いているかのような内容だった。

要注意なのは創業10年以上の中堅の中小企業かなと思う。それぐらいの社歴になると、ほとんどの業務をプロパー社員が牛耳るようになるが、マネージメントを経験と勘だけで行う人が多かったり。「なぜ」「どうして」と尋ねても聞き耳を持たず、結果として組織は疲弊していくばかり。社員のやる気は職場の問題。組織が気になるリーダーは、この本を一読したらいいと思う。

[書籍] 血と汗とピクセル – 大ヒットゲーム開発者たちの激戦記

血と汗とピクセル:大ヒットゲーム開発者たちの激戦記 | 出版書籍 | グローバリゼーションデザイン研究所
https://globalization.co.jp/publication/blood-sweat-and-pixels/

緻密な取材に基づいた、合計10作のゲーム開発の血と汗の開発回想記をまとめたもの。電子版にて読了。

自分はゲームをしないので、記載されているゲームタイトルを見てもピンとこない。最初の3章ぐらいは真面目に読んだけど、それ以後は飽きて飛ばし読みした。それでもゲーム開発は大変なのだなという雰囲気は伝わってきたかな。

ゲームが一般アプリと大きく違うところは、一般アプリが「問題を解決するためのもの」であるのに対して、ゲームは「楽しみを提供するもの」である点だろうか。ある程度動くようにならないと「面白い」「面白くない」が判断できない、面白くなかったら下手するとやり直し。一般アプリとは開発プロセスが全く違う。そりゃ大変だ。

[AWS] RDSの自動起動を抑制するには

RDSは停止させても7日が経過すると自動起動されてしまう。

テスト用にインスタンスを作成して役割を終えたのだけど、近い将来また使うかもしれないので削除せずにキープしておきたいということがある。スナップショットを取って削除して、また必要になればリストアすれば良いのだけど、それだけの作業も面倒に感じてしまう。

そんな場合に課金節約のためにインスタンスを一旦停止させるのだけど、7日が経過すると勝手に再起動されてしまう。それに気付かず放っておくと、使っていないのに課金されてしまう。

どうにかしてRDSの自動起動を抑制できないかと調べていたら、Amazon EventBridgeを使った事例を見つけたので、それに倣って動作を確認してみたい。

まずは料金

Amazon EventBridgeの料金表は以下ページにある。

料金 – Amazon EventBridge | AWS
https://aws.amazon.com/jp/eventbridge/pricing/

スケジューラー

  • 月間無料起動回数1400万回
  • それ以後は月間スケジュール起動回数100万回あたり1.00USD

今回試すのは7日周期のスケジュールでRDSの停止コマンドを発行するというもの。月間起動回数は4-5回というところなので無料枠の範囲だ。

ついでにRDSの料金表も確認しておく。自分はdb.t3.microをテスト用に作成することが多いので、もしRDSの自動起動に気づかず放置したらいくら課金されるか試算しよう。

料金 – Amazon RDS for MySQL | AWS
https://aws.amazon.com/jp/rds/mysql/pricing/

RDS for MySQL (オンデマンド)

  • db.t3.micro (シングルAZデプロイ) 0.017USD
  • 1か月換算 (24h x 30d = 720h) 12.24USD/mo

無料のサービスを使って無駄なRDS課金を回避できるなら最高だ。それでは具体的に設定をしていこう。

IAMの設定

まずはRDSの停止を実行するための、IAMポリシーとロールをAWSコンソールで設定する。

IAM>Policies

  • [Create policy]
  • Policy editor
    • RDS
    • Actions allowed: Write/StopDBInstance
    • Resources > Add Arn to restrict access
      • Specify ARNs
      • Resource in: This account
      • Resource region: us-west-2
      • Resource db instance name: any db instance name(*)
      • ARN: Any resource (db:*)
      • [Add ARSs]
  • [Next]
  • Policy details
  • Policy name: RDS-StopDBInstance
  • Description: Policy to suppress automatic startup of RDS instances for testing.
  • [Create policy]

IAM>Roles

  • [Create role]
  • Trusted entity type: Custom trust policy
    Create a custom trust policy to enable others to perform actions in this account.
  • Custom trust policy
  • [Next]
  • Add permissions
  • Policy name: RDS-StopDBInstance
  • [Next]
  • Role name: RDS-StopDBInstance
  • Description: Role to suppress automatic startup of RDS instances for testing.
  • [Create role]

Amazon EventBridgeのスケジュール作成

IAMの準備が出来たら、Amazon EventBridgeのスケジュールを作成する。

Amazon EventBridge

  • Get started: EventBridge Schedule
  • [Create schedule]
  • Schedule name and description
    • Schedule name: rds-auto-stop
    • Description: Suppress automatic startup of RDS instances for testing.
    • Schedule group: default
  • Schedule pattern
    • Occurrence: Recurring schedule
    • Schedule type: Rate-based schedule
    • Rate expression: rate(169 hours)
      ↑7日+1h(猶予)ごとに実行
    • Flexible time window: Off
  • Timeframe
    • Time zone: (UTC-07:00) America/Los_Angeles
    • Start date and time – optional: 2023/10/01 13:30
      ↑RDSの停止日時に応じて設定
    • End date and time – optional:
  • [Next]
  • Target detail
    • Target API: All APIs
    • All AWS service>Amazon RDS>StopDBInstance
    • Input:
  • [Next]
  • Schedule state
    • Enable schedule: Enable
  • Action after schedule completion
    • Action after schedule completion: NONE
  • Retry policy and dead-letter queue (DLQ)
    • Retry policy: Not Retry
    • Dead-letter queue (DLQ): None
  • Encryption
    • Customize encryption settings (advanced): OFF
  • Permissions
    • Execution role: Use existing role
    • Select an existing role: RDS-StopDBInstance
  • [Next]
  • 確認画面
  • [Create schedule]

Start date and timeで指定した日時になったら、Target detailで識別子を指定したRDSが停止された。7日間が経過するとRDSが自動起動されるが、このスケジュールは169時間(7日と1時間)が経過する度に繰り返し実行されるので、RDSの自動起動→スケジュールによる自動停止→RDSの自動起動、の繰り返しとなる。

参考サイト

RDS、停止したままにしたすぎる問題。 – DENET 技術ブログ
https://blog.denet.co.jp/rds_stop_plz/
1月 6, 2023

停止したのに自動復旧で損してる? 「Amazon RDS」のインスタンス管理を「AWS Systems Manager Automation」で自動化する方法:AWSチートシート – @IT
https://atmarkit.itmedia.co.jp/ait/articles/2305/19/news174.html
2023年05月25日

[インフラ] Serverspecでできること

昨日ざっくり試してみたServerspecだけど、具体的にどんなテストが出来るのだろうか。

Serverspecのテストファイルは以下の形式で記述する。

リソースタイプとテスト条件については、以下の公式ページにまとめられている。

Serverspec – Resource Types
https://serverspec.org/resource_types.html#php_config

自分が使いそうなリソースタイプを抜粋してみると以下。

  • command
  • cron
  • file
  • host
  • mail_alias
  • package
  • php_config
  • process
  • port
  • selinux
  • selinux_module
  • service
  • user

コマンドの実行結果をチェックしたり、ファイルやディレクトリの存在や属性もチェックできるので、システム設定に限らず、アプリケーションの動作確認をするのにも役立ちそう。