taki のすべての投稿

Jenkinsサーバを立ち上げてみた

Jenkinsというと、自動的にビルドしてくれたり、自動的にテストしてくれるというイメージがあるんですが、今のプロイジェクトでも使用しているので、使ってみました。

使い方はこちらを参照すれば一発で使用できます。

https://jenkins.io/doc/pipeline/tour/getting-started/

英語で書かれているけど、これくらいは読めるようになれよな。

要はファイルをダウンロードして、コマンドを叩いて、ブラウザからアクセスすればOK

フォルダにパスコードが書かれたファイルが出来上がるので、をれを開いてコピペすればセットアップが始まります。

様々なビルドに対応出来るように、必要な機能はプラグインが用意されています。

で、使ってみた感想。

簡単に自動ビルドや自動テストができる、というのは建前で、

実際は、

cronに毛が生えたもの

ビルドするためのスクリプトは基本的に自分で用意します。Jenkinsはそのスクリプトを、様々な条件をトリガとして実行してくれるものです。

ただ、gitと連動して、バックグラウンドでgitサーバから最新ファイルをチェックアウトして、ビルド処理を実行してくれるのは結構らくちん。

やり方次第では自動デプロイとかもできるかもしれない。

ただ、

どこのサーバで稼働させるか、が、ちょっと悩みどころで。

メリットを生かすためには常時稼働しているサーバがふさわしいので、ラズパイをもう一回買ってみるかなー

新元号「令和」、昭和→平成の時はどうだったか?

どうも、昭和から平成を抜けて令和に生きようとしているぼっちです。

4月1日、ついに新元号、「令和」が発表されましたね。

世の中おまつりムードに沸いている中、ちょっと違和感を覚えたので、まとめさせて頂きます。

昭和から平成に変わるときはどうだったのか?

今回の新元号発表は、あらかじめ、現天皇が退位され、新天皇に変わると言うことがあらかじめ決まっていたスケジュールで発表された物でした。

昭和から平成に変わろうとしていたときはというと、

昭和64年のお正月休み中、朝起きてテレビを付けると、突然テレビが、どのチャンネルを回しても同じ内容を特別編成で放送していたのです。

昭和天皇が危篤という内容でした。

このとき、私はまだ北海道の田舎に暮らす小学生で、他に遊ぶ物もないし、いまでは唯一の救いと言われてきたTVh(テレビ東京)というチャンネルも存在しませんでした。(正直、娯楽が無くて退屈でした)

そういった状況がお昼まで続き、結局、というか、予想通り、昭和天皇崩御となりました。これもテレビの放送で知ることになりました。

で、そこからの、今の元号「平成」の発表です。

今と違ってSNSなんてて無かったし、そもそもインターネットという物もなかったし、崩御の直後と言うこともあって、お祝いムードは全くありませんでした。

むしろ、元号が変わると言うことで、自分は「1つ昔の世代の人間」という印象を受けて、あまり、元号が変わることについては否定的でした。

そりゃあ、オイラのおじいちゃんが「大正」生まれだったもので。

(そんなこといいつつも、オイラの母は、いまだに西暦何年生まれなのかをすぐに計算することができません・・・。「昭和何年うまれだから、えっと・・・」という感じです)

(さらに余談ですが、オイラは計算がめんどくさいので、昭和何年生まれというのと、西暦何年生まれ、というのを両方覚えています。これからの時代、両方覚えておくと良いですよ。)

ちなみにと言うと、昭和天皇が崩御した後、昭和天皇を含め、皇室がどうだったか、という記録映像を回顧録として、特別編成番組としてほぼ一日延々と流れました。

これからの事を考えると、現天皇が崩御したとき、テレビ東京がどのような放送をするのか、というのはちょっと気になるところではあります。(不謹慎な内容で申し訳ありません)

ともあれ、今の若者達は、元号が変わることを「新しい時代の始まり」「その瞬間に今生きている」と好意的に受け取ってもらえていることにちょっと嬉しくも思います。

日本の未来は明るい。

そんな未来であって欲しい。

Alexaさんで遊ぼう Fire TVと連携させる

fire tv stickを買いました。

これを買おうと思ったポイントは、Amazon Echoと連携できることもそうですが、利用できるコンテンツとして、AbemaTVとDアニメストアが使用できる点です。

やっぱりテレビの大画面で見たいです。

開封

スティック側をテレビのHDMIポートに挿し、USBから電源を供給すればセットアップが始まります。

このとき、Amazon Echoがあれば自動的にリンクしてくれます。

セットアップ完了。

DアニメストアやAbemaTVは、アプリという形で提供されています。

なので、視聴したいときは

「アレクサ、アベマTVを開いて」

「アレクサ、Dアニメストアを開いて」

という感じで使用します。

コンテンツの名前を指定した場合はプライムビデオを検索しにいきます。

つまり、Dアニメストア内のコンテンツを声で指定することはできないのです。

まぁ、それは仕方が無いか。

残念なのはDアニメストアのマイページ。

続きから見る、という項目がないのです。

不便。

視聴履歴は引き継がれているので、そこから折っていくしかありません。

YouTubeはブラウザ経由での視聴ですが、使用感覚はPS4のYouTubeとほぼ同じでした。

【C言語】浮動小数点数(実数型)

小数点を扱うことができるデータ型です。

実行結果はこうなります。

浮動小数点数は符号ビット、指数部、実数部でデータを持っています。

といっても、オイラは仕事で少数の数字は余り使うことは無かったので、余り詳しくはありませんが。

こんなもんだと考えてもらえれば問題ありません。

小数をprintf()で表示するにはフォーマットを%fで記述します。

そうした場合、小数の桁数が固定になるため、表示したい桁数を示す場合は、上記のように%とfの間に数字を記入します。

と、ここまで変数について記載しましたが、

実際に現場では下記のようにtypedefで再定義する事が多いです。


実行結果はこうなります。

こう書けば、その型が符号付きなのか、何ビットデータなのかが一目瞭然になります。

これから40代を迎える30代の皆様へ

実際に40代になって、いろいろ思ったことをまとめてみました。これから40代を迎える方々に参考になってもらえれば幸いです。

●筋肉のコリを甘く見てはいけない。

特にデスクワークなど、同じ姿勢を続けている人は気をつけて欲しい。

同じ姿勢を続けていると、特に肩や首の筋肉が常に緊張状態になり、これが凝っている状態となります。

自覚症状があれば良い方なのですが、中には自覚症状のない人もいます。(自分がそうでした。)

コリが悪化すると、血液の流れが悪くなり、栄養が届かなくなって、手のしびれや、頭が重い、耳鳴りがする、と言った症状が出てきます。

これらの症状が出てきた場合は、整体院で相談してみることをオススメします。

特に姿勢が悪い人はちゅういするように。

●目の衰えが始まる

目のピントを合わせるのに目の中の筋肉を使ってレンズの厚さを調整しているのですが、この筋肉が40代頃に衰えてきます。

その結果どうなるかというと、近くの物を見るのに、筋肉が無理して頑張ってしまいます。

これがどんどん進んでいくと、強烈な目の疲労が出てきます。

これが結構辛い。

これは目のピントが合わないことに起因しているので、直ちに眼科医を受診し、自分の目にあった、無理の無いメガネを使用した方が良いです。

まぁ、これが老眼の始まりなんですけどね。

●いろいろ体が衰えてくる

体の衰えから、今までできたはずのことができなくなります。

それが気持ちとの大きなギャップが生まれ、精神が不安定になります。

これが更年期障害です。

更年期障害は自分の体を受け入れることで次第に解消していきます。

まずは無理しないで休みながら過ごしていくのが良いかと思います。

まぁ、無理すんなってことです。

40過ぎたら無理できなくなってるんで。

もっと自分の体をいたわってあげてください。

【C言語】整数型

変数を扱うに当たって、重要なのは変数が扱える値の範囲を意識することです。

データ型によって、変数が扱える値の範囲が変わります。

その基準がその型がどれだけのバイトサイズか、と言うことで決まります。

こんな検証用のコードを書きました。

sizeof()というのは、型で使用するデータサイズを計算してくれます。単位はバイトです。

実行結果はこうなりました。


1バイトというのは8ビット、8個の0/1でデータを表現しています。

さらに、signedとunsignedというのがあり、signedというのは、符号付き、という意味で、マイナスの値を表すのに1ビットを使用します。

それぞれの型が表現できる型は、以下の式で表現できます。

・符号付き(signed)の場合(nはビット数)

-2^(n-1) ~ (2^(n-1))-1

・符号無し(unsigned)の場合(nはビット数)

0 ~ 2^n-1

charを例に取れば、扱える値の範囲は-128~127、ということになります。

では、この範囲を超えてしまう場合はどうなるのでしょうか?

こんなコードを書いてみました。

charが扱える最大値に+1しました。

実行結果はこうなります。

これはどういうことかというと、+1することによってcharが扱えるデータの範囲を超えてしまったため、入りきらずに溢れたデータは消失してしまいます。

その結果、データの値的にはcharの一番小さな値になります。これは、ロールオーバーと呼んでいます。

小さな値を扱うには問題無いかと思いますが、大きな値を扱う場合は、データ型がどこまで扱えるか、というのを意識しなければなりません。

その意識が漏れてしまうと、想定外の値となってしまい、それが原因で、バグが発生してしまいます。

プログラムを設計する場合は扱えるデータの範囲とロールオーバーを意識しなければなりません。

それを解決するには、16進数、10進数、2進数の変換をスムーズに行えなければ難しいでしょう。

10進数への変換は電卓アプリに任せるとして、16進数と2進数の変換はプログラマーなら覚えておくべきです。

16進数 2進数 10進数
0x0 → 0000b → 0
0x1 → 0001b → 1
0x2 → 0010b → 2
0x3 → 0011b → 3
0x4 → 0100b → 4
0x5 → 0101b → 5
0x6 → 0110b → 6
0x7 → 0111b → 7
0x8 → 1000b → 8
0x9 → 1001b → 9
0xA → 1010b → 10
0xB → 1011b → 11
0xC → 1100b → 12
0xD → 1101b → 13
0xE → 1110b → 14
0xF → 1111b → 15

こんな感じでテンプレートみたいに覚えておくと、後々役に立ちます。

16進数の0~Fを2進数の0/1に置き換えれば簡単に変換出来ますので。

例えばunsigned char型なら最大値が0xFF(1バイト)なので、2進数に変換すると0x11111111となります。

【C言語】変数

変数とは、計算中の値を一時的に保管する入れ物です。

以下のようなソースコードを記述して実行してみましょう。

実行すると出力はこうなるはずです。

では、ソースコードを解説します。

ここで使用する変数を定義しています。

変数には、大きく分けて3つ分けられます。

整数、浮動小数点数、ポインタです。

ポインタについては後々説明しようと思いますので、ここでは整数と浮動小数点数について説明します。

左側のint、floatというのは変数の型、右側には変数名を記述します。

intは整数、floatは小数の型であることを示しています。この型についても後々説明します。

変数は定義しなければ使用することはできません。

ここで変数に値を格納しています。

左辺に格納先変数名、右側に格納する値を記述します。

ここで変数の値を標準出力に出力しています。

変数は格納したままでは、使用者には値がわかりませんので、何らかの形で可視化しなければならないケースがあります。

%d、%fというのは、変数の値を表示する位置と表示形式を表します。そして、printf()の第二引数以降に%d,%fと置き換える変数名を指定します。

%dは、十進の整数で表示、%fは小数で表示する、ということを表しています。これについても後々説明します。

変数の値は基本的に初期値を設定し、初期化する必要があります。

変数は定義した時点では、何が入っているかわかりません。初期化せずに使用した場合はバグの原因となります。変数を定義するときは以下のように初期値と一緒に定義するのが一般的です。

次回はデータ型について詳しく説明します。

【C言語】コンパイルとリンクとビルドの話

昔、仕事現場で、

「リンクって何ですか?」

って聞いてきた若者がいたので、

ここできちんと説明した方が良いのかなと。

まず、コンピュータに命令を出すには、0と1で記述された「機械語」で命令を出さなければなりません。

機械語でなければコンピュータは理解できないのです。

なので、記述したソースコードを実行するには、ソースコードを機械語に変換する必要があります。

ソースコードを機械語に変換する処理を「コンパイル」といいます。

C言語の場合、ソースファイル毎にコンパイルを行い、オブジェクトファイルという形で機械語に変換します。

しかし、このままでは機械語の命令がソースファイル毎に分断されている状態なので、このままでもコンピューターに実行させることはできません。

そこで、実行に必要なファイルを1つに結合する「リンク」という作業が必要になります。

C言語の場合、ソースファイル毎に変換されたオブジェクトファイルと実行に必要なライブラリファイルを1つにまとめて実行形式のファイルに結合します。

一般的に「ビルド」と呼んでいるのは、この「コンパイル」と「リンク」を一括して行う作業をいいます。

次回は変数について説明しようと思います。

【C言語】最初のプログラム

前々からやろうと思っていた、プログラミングをレクチャーする記事を書きたかった。

なので、まずはC言語でやってみようと思います。

C言語はアプリケーションの世界では余り使われていませんが、ファームウェアやOSなどのハードに近い処理を行うところで、現在でも現役で使用されています。

それにC言語で身につけた知識は他の言語にも通ずる所が沢山ありますので、よりプログラミングの知識を身につけたいと思っているのなら、学んでいて損は無いです。

それではやっていきましょう。

使用するツールはVisual Studio 2017を使用します。

事前準備として、C++プロジェクトが使用できるようにします。

メニューから「ツール」→「ツールと機能を取得」を選択し、「C++によるデスクトップ開発」にチェックを入れます。

次にメニューから「ファイル」→「新規作成」→「プロジェクト」を選択して「Visual C++」のWindowsコンソールアプリケーションを選択します。

※「Windowsデスクトップアプリケーション」は何かとハードルが高いので、とりあえず今回は触れません。

そうすると、以下のようなソースコードが表示されます。

実は、この状態ですでにプログラムが出来上がっています。

実際に実行してみましょう。

メニューから「デバッグ」→「デバッグの開始」を選択してください。

こんな感じに表示されるはずです。

しかし、このコードはC++のコードで記述されています。

ですので、これをC言語のコードに書き換えます。

書き換える場所は以下の二箇所

書き換えたら先ほどと同じようにデバッグの開始をしてみてください。先ほどと同じ結果になるはずです。

それではこのコードの解説を行います。

#include <stdio.h>

stdio.hは標準入出力ライブラリを使用可能にするヘッダーファイルを適用する、という意味です。これを書かなければ、次に説明する「printf()関数」が使用できません。

標準入出力というのは「画面のコンソール」を差します。コンソール画面からキーボードの入力やコンソールに文字列を表示する、といった一連の機能をstdioライブラリで提供しています。

printf("Hello World!\n");

printf()は標準出力に文字列を出力する関数です。表示する文字列は()の中の「”」で括られた文字列です。

最後の「¥n」は改行を表しています。

次回はコンパイル、リンク、ビルドの話をしようと思います。