年4回、計50ページの雑誌記事を書いたメモ

2014年10月23日木曜日

この一年、日経ソフトウエア誌に寄稿する機会を多く頂きました。

雑誌に年間4回寄稿するというのは初めての経験であり、感慨深いものだったので振り返りがてらメモしてみます。




1本目

日経ソフトウエア 2014年 02月号 [雑誌]

日経BPマーケティング (2013-12-24)

最初は2014年2月号(2013/12/24発売)にてAndroidとiOSの特徴を活かしたアプリ作りという話を書きました。
Androidだからできること
iOSだからできること

AndroidとiOSでは、アプリで使える機能にも差があります。両者の得意分野、実装できる機能などを、ポイントを絞って解説します。
当時はAndroid 4.4、iOS 7(7.0)という状況で書きました。比較的ライトにまとめ、分量としては10ページでした(いわゆる特集4)。

記事ではAndroid で開発しやすいものとして
  • アプリ同士の連携
  • NFCの利用
  • ソフトウエアキーボードの自作(ウェアがウエア表記なのは特徴的なところ)
  • iOSよりも高速にJSを実行できるWebView組み込み
  • 配布時に最大4GBの追加ファイル配信
  • 端末の種類別にアプリパッケージを切り分けて配信
  • 効率よくテスターからフィードバック獲得
を挙げました。もちろんこれら以外にも挙げるべき箇所はあると思いますが、特徴的なところを挙げたつもりです。
全体的にプラットフォームとしてのAndroidの自由さ/ゆるさと、Google Play Services範疇のものを挙げていました。

対してiOSに関しては
  • AirDropを使った付近の端末との情報交換
  • アプリケーションをまたいだオーディオの組み合わせ処理
  • Bluetooth LE利用APIの豊富さ
  • ユーザの最新OSへのアップデート速度が速い点からくる最新APIの使いやすさ
を挙げました。

あと枠外として、BYODに活用できるセキュリティ機構についてそれぞれのOSのアプローチ差を概説しました。

執筆してからほぼ1年が経ち、各OSはAndroid 5.0 / iOS 8.1へと進化を続けてきました。
iOS 8でのApp Extension、ソフトウェアキーボード作成のオープン化は象徴的です。
NFCについてはまずは様子見という感じのiOSですが、早晩デベロッパ向けのSDKも解放するのでしょう(2-3年経ってもリリースされなかったら笑いますが)。
Androidにおける最新バージョンシェアの立ち上がりがかなり遅い問題についても、Google Play Servicesとsupport libraryでのカバーという面がより鮮明になっている昨今です。
今だと、Phone端末でも平然と使えるようになったマルチユーザあたりをAndroidの序盤に入れると思います。
AndroidでのBLEも、Bluetooth 4.1ベースとなって今度こそ立ち上がってくる、のかはまだ分かりませんがきっと少なからず変化はあるでしょう。

2本目

日経ソフトウエア 2014年 08月号 [雑誌]
日経BP社 (2014-06-27)
売り上げランキング: 34,361

次は2014年8月号(2014/06/24発売)にて、5月に参加した台湾のMaker Faire Taipei 2014のレポート記事です。
海外のメイカー・ムーブメントを体感
「Maker Faire Taipei 2014」
2ページの短いレポートなので紹介できたポイントは多くありませんが、日本と似たところ、違うところと感じたままに雰囲気を書きました。
3Dプリンタなどでも「極力コスト抑えて工夫で頑張るぜー」 勢と「買うたったウッヒャー」勢と「こんなん作ったった」勢が入り乱れて新しいものが生まれていくエネルギーは面白いなぁと改めて思った次第です。

3本目

日経ソフトウエア 2014年 09月号 [雑誌]
日経BP社 (2014-07-29)
売り上げランキング: 35,526

続いて、最大規模となった2014年9月号(2014/07/24発売)で、JavaとC#とObjCへと一気に入門する的な28ページの記事です(特集1)。
Java、C#、Objective-C
人気3言語を丸ごとマスター

JavaとC#、Objective-Cの3つは、ともにオブジェクト指向を取り入れたプログラミング言語であり、文法などの類似点が多くあります。そこで本特集では、この人気3言語を一気にマスターしてみましょう。それぞれの言語の類似点・相違点を正しく理解すれば、きっと今までよりも深く言語を知ることができるはずです。
冷静に振り返ると、タイトルと概要からは全方位で殴られにいく内容に見えますが(見えますよね)、
  • C#でのunsafe経由でポインタを扱う話
  • C#というよりCILをいじってMainメソッド以外をエントリポイントに使う話を含む各言語のエントリポイントと起動フローの話
  • ObjCでivar_getOffsetを使ったゴリ押しリフレクション
といった好き勝手にぶっ飛ばす話は最後の6ページのみで、大半は
  • 基本的なクラス構造とメソッド(メッセージ)呼び出し
  • 集合に対するオペレーション(LINQ to Objects, Stream API, 軽いSwiftへの言及)
  • 関数型プログラミング勢から殴られない範囲のライトな型推論
  • マルチスレッド処理(と軽いラムダ式)と排他処理
  • 書式指定子の比較
  • アクセサとプロパティ
  • 匿名(無名)クラス、blocks
  • 静的フィールド
  • 並列処理の仕組み(LINQ to ObjectsとStream API再び)
  • 例外処理の特徴ざっくりしたところ
  • アノテーションとアトリビュート(JavaではAPT含め)
  • リソースの解放保証(C#のusingとJavaのtry with resources)
  • C#の拡張メソッド
あたりをマイルドに紹介しつつ解説する内容でした。
ところどころ自分でも普段利用しない言語仕様(Java 8は仕事上もAndroid上もまだ未来のものなので!)への言及をおこなう都合上、実際に挙動を試したりVMやランタイムの仕様書や公開資料をひっくり返したりというフェーズが割と長かった記憶があります。

とりわけObjective-C 2.0については、低レイヤの知識が古い/不足していた箇所もあったので、@splhack先生のエキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッドを読んだり、Effective Objective-C 2.0: 52 Specific Ways to Improve Your iOS and OS X Programsを読み返すなどして補って執筆に臨みました。

冒頭で
このパートを読み終われば 、生粋のJavaエンジニアも、Objective-Cの[]を気持ち悪いと思うことがなくなるでしょう。
と書いたのですが、結果としてこの恩恵を一番受けたのは自分自身だった気もします。

分量の問題は割と深刻でした。私は、雑誌への寄稿において仕事時間は執筆系タスクにあてない、というのを個人的ポリシーとしている(上司からは"仕事時間にやってもええよー"とは言われている)のですが、この時はさすがに「2日ほど有給を取って執筆にあてます」とギブアップすることになりました。
後で周りに話を聞いたら「それ3人で分担する量やで」と突っ込まれて白目剥きました。
それゆえ一貫した見方での記事には仕上がったと思うので、良いのですが(締め切り的には全然良くなかったのですが)。

4本目

日経ソフトウエア 2014年 12月号

日経BP社 (2014-10-24)

最後は2014年12月号*1、明日(2014/10/24)発売です。ぜひ手に取ってみてください。書いた内容はXamarinとXamarin.Formsを利用した、Android/iOS(/Windows Phone 8)向けのアプリケーション同時開発です。
【特集1】
『Android&iOSアプリ同時開発』
スマホアプリを多くの人に使ってもらうためには、AndroidとiOSの両OSで同じように動くアプリを作るのが理想的です。
現在は、Android向けアプリとiOS向けアプリの共通部分を1つのコードで開発できるツールが数多く存在します。
両OS向けのアプリを同時開発する手法と、そのポイントを紹介します。
特集1は3つのパートに分かれていて、私はパート2(Xamarinを使った複数プラットフォーム同時開発)の10ページを執筆しました。
この中では、開発前に考えるべきこととして、Xamarinの適用に向いているエリア、UI共通化の現実味や「無理に共通化を狙うべきではない」箇所についての検討ののち、Xamarin.Formsを使って実際にMVVMでクロスプラットフォームのアプリを開発していくというフローを分かりやすく紹介するところにフォーカスしました。

Xamarinを取り巻く基盤の話とMVVMのざっくりした解説をおこなった後は実際にハンズオンに近い形でアプリ構築と両プラットフォームでの動作確認までをおこなってみるスタイルの記事です。

記事中で、Xamarin.Formsでの軽く流れを把握するための小さなプロジェクトをさらりと流した後のメインお題はTwitterクライアントの開発です。
様々なプラットフォーム用に便利なライブラリが提供されている現代においては、例えばTwitterに関してはAndroid用にはTwitter4jなどを使うと機能の作り込みは比較的スピーディーにおこなえます。
しかし、しっかり作り込んだものを他プラットフォームでまた全然違う基盤の上で作り込み直すのは実際辛い。Xamarinだと、その作りこんだロジックを他のプラットフォームにも持っていけるのが嬉しい、というのが伝わると良いナァと考えつつ書きました。

また、記事の最後に10/6〜10/10の日程でおこなわれたXamarin Evolve 2014で発表されたXamarinの新機能の紹介と試用した結果を記載しました。おそらく、日本語の紙雑誌媒体でEvolve 2014のトピックを扱ったのは日経ソフトウエア 2014年12月号が最初だと思います(違ったら教えて下さい)。

関連情報として、非XAMLでのXamarin.Forms開発については、現在プレビュー版が配布されている Creating Mobile Apps with Xamarin.Forms, Preview Edition (Developer Reference) [Kindle版] を読むのがおすすめです。完成版でも良い本になる雰囲気出てます。

*1: 日経ソフトウエアサイト上のバックナンバーURLはまだありません。後日追加します

一年終えての雑感

執筆してきたネタをまとめると
  • iOSとAndroid
  • JavaとObjective-CとC#
  • Xamarinでの複数プラットフォーム同時開発
(そしてMaker Faire)という具合です。
全体に、OSの狭間と言語の狭間でもがいているのをなんとなく察していただけるかと思います。
複数のOSや言語を扱う機会が日常的にあるのは、現職での仕事内容のおかげです。

そして、時間と紙面が限られる中で一定以上のクオリティの記事を紙媒体へと持っていけたのは、スケジュール的にギリギリになった原稿にお付き合い頂いた編集の方と、校了前にこれまたギリギリのタイミングにも関わらず査読を頂いた方々のおかげです。
得難い経験をできた嬉しさと共に、手に取って読んでくださった方々、特に辛口なフィードバックをくださった方々に深く感謝する次第です。

なお、年間を通じて編集進行で迷惑をかけ倒してしまったので、この先については、やるにしても6-7割ネタを書き上げた状態で持ち込むようなスタイルにしないと詰み体質は脱却し難いという知見が得られました。

0 件のコメント:

コメントを投稿