今更だがDockerを勉強中!?

QNAPを使い始めて早くも6年半。当時はContainer Stationもなければ、スレージプール機能も存在しなかった。

そんな中でQNAPを単なるファイルストレージとして使わず、LinuxサーバとしてOpenPNEなどをQNAP上で直接運用して来たのだが、最近のバージョンアップで最新のPHPに対応していないOpenPNE2が動作しなくなり、新機能のHybridMountを使おうにもストレージプールに変更しないと使えないし、App Centerに今まで存在していたアプリが消えて無くなるなど制約が多数発生するようになってきた。

QNAP上で運用していた様々なアプリに問題が生じるようになってきたので、そろそろアプリの運用方法も見直さないとやばいかな〜と思い始めたので、今更ながらDocker(Container Station)の使い方を勉強し始めた。

今までQNAP上でネイティブで運用していたアプリをDockerで置き換えできれば、今後何かあってもデータとDockerの定義ファイルさえ残っていれば、復旧させるのも、新しい環境へ移行するにも楽かなと思って。

しかし、まだまだ使い方を勉強し始めたばかりで、理解できていない部分も多いのか、QNAPという環境が特殊なのか、苦労する事も多い。

ネットの情報を元にコンテナを作ろうとしても、何故かpullしてくるイメージがIntel系になってしまい、今使っているQNAP(ARM)だと正常に動作しなかったり、buildして作成したイメージに名前を付けなかったり、同じ名前を付けると古いイメージの名無しになってしまって、Container Stationのイメージ一覧に表示されない、など癖があって何かと苦労する。

更にQNAPのWebUIではDockerfileをbuildする方法が用意されていないので、QNAPのWebUIからQNAP自身にssh接続するためのDockerfileを作ってみたが、docker runとかで使えるように最後のENTRYPOINTやCMDで直接shellを起動するようにしたら、QNAPのContainer Stationでは何故か正常に動作しない。

仕方がないので、何もしないコマンド(実際は「tail -F /dev/null」)でコンテナを実行状態にしてからWebUIのターミナルを起動する方法で誤魔化す事でQNAPにWebUIからssh接続できるようになった。

とりあえず、基本的なイメージ、ボリューム、コンテナを作成して、QNAP上で実行するところまでは問題なくできるようになったかな。

次はDocker Compose(QNAP上でのアプリケーションの作成)だが、中身が1コンテナだけのアプリってどんな意味があるのか理解できていないので、とりあえず複数コンテナを組み合わせたアプリの作成を覚えたいなと。

Share

Android Oreo(8.0)の開発環境

Android Oreo(8.0)が正式にリリースされたので、そろそろ開発環境も正式にAndroid O対応に更新しないとなぁ〜などと思っていたので、今回仕事の空き時間を使って詳しく調査してみた。

仕事、しかも顧客から受注した仕事の場合、Android Studioは当然正式版を使うのが前提になる。顧客からの要望があればベータ版での開発や既にメンテナンスされていない古い環境(Eclipse)で開発する事もあるが、あくまでも例外である。

しかし、Android Oがリリースされたにも関わらず、Android Studioの正式版は未だにバージョン2.3で、Android OのSDKはalpha版(正確にはSDK本体は正式版だが、Repository上のSupport Libraryがalpha1)のままだ。

しかも、このalpha版に致命的なバグがあって、NotificationCompatが古いままで、Android Oで通知が表示されないという問題がある。

Android Studio 3.0のベータ版を使えば問題は解決するが、それでは面白く無いと言うか、ベータ版を使う事を拒否する顧客に対応する事ができない。

そこで、Android Studio 3.0と2.3の違いを比較して、Android Studio 2.3上でベータ版の機能を一切使わずにAndroid Oの開発環境が作れないかを調査したので、その備忘録を残しておく。

  1. 使用するgradleを最新版に更新する
    gradle-wrapper.properties の distributionUrl の値を最新版(この記事を書いている時点では4.1)に書き換える

    distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
  2. 参照するリポジトリにgoogleを追加する
    プロジェクトの build.gradle の repositories の値に google() を追加する

    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
  3. ライブラリの依存関係を更新する
    アプリケーションの build.gradle の dependencies の値で使用しているSupport Libraryのバージョンを最新版(この記事を書いている時点では26.0.2)に書き換える

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:26.0.2'
        compile 'com.android.support:design:26.0.2'
    }
Share

Accelerated Mobile Pages

WordPressを使って開設した弊ブログをGoogle Search Consoleで管理するようになったのに合わせて、SSL対応と同じように最近の時流であるAMP(Accelerated Mobile Pages)にも対応させようとプラグインを導入してみた。

しかしAMPプラグインを導入後しばらくすると、Google Search ConsoleからいきなりAMPのエラーメッセージが送られてきたのでかなり慌てた。

しかもエラーメッセージを確認すると画像系のエラーが2つ、エラーの詳細を確認すると、AMPではサイトアイコン(logo)記事に対するキャッチ画像(image)が必須のようで…

って、そんな面倒なモノは確かに設定して無いと言うか、画像如き必須じゃなくて任意にしてくれって言いたい!!

個人的にはあまり画像とか設定するのは好きじゃ無いんだが、AMPのルールで必須になっているんじゃ仕方が無いので、とりあえず無理矢理に画像を設定してエラーを回避する事に。

また、このブログのAMP対応をしていると、時期を同じくしてAMPがフォームに対応したって言うニュースが…って、これまでAMPではフォームに対応して無かったのね。

画像必須といい、フォーム対応といい、AMPもまだまだこれからの技術なのかな〜とは言え、PCを触った事が無いスマホ世代とかが増えている現在、仕事でもスマホファーストが益々重要になると思えば、未完の技術だとしても今のうちに勉強だけはしておかないとね。

Share

自作のAndroidアプリ

趣味でプログラムを書き始めて早30年以上、今では仕事もプログラマと言う状況になってしまったが、今でも余暇に趣味のプログラム開発を行うことがあります。

最近の趣味でのプログラム開発は主にAndroid用アプリの開発を細々と行っているような状況ですが、せっかくWordPressを使い始めたので、WordPressの固定ページを使って自作アプリの紹介ページでも作ってみようかと思い、先日から固定ページを少しづつですが作り始めました。

ただ趣味でのプログラム開発は、どうしても普段の生活の中で余った時間を使って行っている都合で、メンテナンスの行き届いていないアプリが多くなりがち。特に無償のアプリは自分が最初に思い描いた機能さえ開発してしまえば、後は利用者からの要望や意見などがない限り自己満足で終わってしまうので。

とりあえず、最初はメンテナンスの出来ているアプリから順次掲載していく予定ですが、現在メンテナンスの出来ていないアプリについては固定ページを作る前にアプリのメンテナンスを先に行いたいところ…

自作アプリの紹介ページへはメニューからも移動できますが、ここにもリンクを張っておきます。

Share

Google Search Console

私はプログラマなので何時もは、スマホ用のアプリからPC用のアプリ、サーバ側用のアプリ、更に最近はWebアプリまで顧客の要望に合わせて様々なプログラムを仕事で作成している。ただしプログラマなので普通のホームページの作成などは普段行っていない。

しかし、今回WordPressを使い始めて本ブログを書き始めた事や、Webアプリやスマホ用アプリなどを取り巻く状況の変化の速さを考えていると、この機会にSEO対策関連について最低限の基礎知識だけでも勉強しておこうかなと思った。

で、早速本ブログの情報をGoogleで正しく検索出来るようにと、Google Search Consoleで必要な登録したり、WordPressのプラグインを設定したり、って作業を始めたのですが…

何故か正常に反映されない。と言うか、先日まで正常に検索でヒットしていたページが突然検索結果から消えるとか、初めての経験で何をどう設定するのが正しいのか全く分からない。

ネットで調べても、どこも同じ事しか書かれていないし、しかも情報通りに実践しても検索結果には思ったように反映されないし…まだまだ勉強不足なのか分からない事だらけで少し困っている。

ただ本格的なSEO対策がしたい訳でも無いので、お金や時間をかけて解決するつもりも無いので、そのうち暇を見て独学で勉強しつつ、少しづつ改善して行ければとは思っている。

Share

Google AdSense

せっかくブログを書くのであれば、儲かるかどうかは別にしてアフィリエイトも勉強がてら始めてみようかな~と考えて、早速Google AdSenseの設定を…と思ったが、ここのサイトのようなDynamic DNSを使ったサブドメインやサブディレクトリでは登録できないって制限があることを初めて知った。

これまでGoogleを贔屓してきたのでアフィリエイトも出来ればGoogle AdSenseで…と安直に考えていたので、利用するのに独自ドメインを取得する必要があるっていうのは面倒だな~諦めて別のサービスを利用するか、独自ドメインを改めて取得するか、それともアフィリエイト自体を諦めるか…

と言うのも、まず、このサイトの運営方針は、「お金をかけない」、「管理しない」、「手間をかけない」、「面倒なことはしない」、「誰にも(他人だけでなく自分にも)迷惑をかけない」を基本としており、サーバ運用は手抜きすることを基本としている現状で、別サービスを契約するとか、独自ドメインを取得するのは面倒だな~と思っていること。

また、儲かるかどうかも分からないものに労力を割くというのは煩わしいと感じている自分が居ること。

せめて、それをすることによって、「楽しそう」とか「面白そう」とか「ワクワクする」とかって感じられれば、労力に見合う収入が期待できなくても頑張ろうって気にもなるんですが…

さて、どうしたものか…具体的な数値(自分の労力に対してアフィリエイトで実際に儲かる金額など)が分かれば、行動に移すこともできるのだろうが。ブログを始めたばかりで具体的なアクセス数も未知数の現在、暫くは現状維持が精いっぱいかな(笑)

Share

WordPressを始める

ネット業界に関わり続けて二十数年。草の根BBSから始まり、これまで様々なサービスを利用して来ましたが、何故か今までブログだけはやって来なかった。それは恐らく、私が根っからの技術者であり、世にある既存サービスを使うだけで単に文章を書くというだけの作業に耐えられなかったからだと思われる。

初めて自宅で草の根BBSを立ち上げた時もソースコードを自分で改造したプログラムを使ってBBSを運用していたし、現在運用しているSNSもOpenPNEを独自に改造したものを使っているような状況です。

しかし最近、自宅サーバを使ってもっと面白い事が出来ないかと考えていたのと、最近流行り(?)のWordPressを使ってみたい&この機会に勉強しておきたいと思ったので、一石二鳥とばかりに今回自宅サーバにWordPressをインストールしてみました。

せっかくWordPressをインストールしたので、この機会に少しブログを書いてみようかな~とも思っているので、どこまで持続できるかは全く分かりませんが、少しずつブログの方も充実させて行ければと思っています。

とりあえずブログの内容としては最近頻繁に(直近だと1年間に13回と)遊びに行くことも多い海外旅行の情報や現在は仕事でもあり元々は一番の趣味でもあったコンピュータ関係の情報を中心に書いて行きたいと思っています。

Share