RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

イベント詳細についてはこちらをクリック

Swift初心者がとりあえずXcode触ってみた

あけましておめでとうございます!新卒1年目のrs_chankoです。
今回はXcodeを触ってみた話をしたいと思います。

はじめに

就職してもう少しで一年、配属されて半年が経ちました。
自分のチームではアプリの開発も行っているのですが、
いかんせんあまり勤勉でなかった私は学生時代EclipseJavaを扱うのがほとんどでした…。

そこでこれからやるであろうアプリ開発についてどうやって学習しようか考えていたのですが、
触ってみないことには始まらない!と思い立ち
まずはXcodeとSwiftに慣れるためにサンプルプログラムを組んでみることにしました!

↓こちらが参考にしたサイトです。 developer.apple.com
こちらはApple公式のチュートリアル用ドキュメントです。
簡単な話、開発環境さえあればコピペぺたぺたすればアプリができてしまいます。

なので今回は実装方法などよりも、GUIにあまり触れたことのない初心者が触ってみた感想について書いていこうと思います。

Xcodeの所感

  • ストーリーボードによる直感的な操作
f:id:rs_chanko:20200111194655p:plain:w300

こちらが実際に作成したアプリの画面です。
これがなかなか直感的で分かりやすい。(GUIだしそれはそう)
これを実行すると…

f:id:rs_chanko:20200111202535p:plain:w300

こんな感じでシミュレータが起動します。
そのまま実際に動かした時の挙動を再現できるのも便利でした。

エディタの右側のメニュー上でUIパーツのサイズや配置場所の指定や、
他機能との接続をすることで、自動的にソースコードが書き変わります。
画面を作成する段階で私は全くSwiftを理解していませんでしたが簡単に画面を作ることができました。
簡単で画面遷移があまり多くないアプリであればこのように直感的に操作ができると作ってみたくなりますね。


  • Unit Test

Xcodeは、クラス作成時にUnit Testのターゲットに選択するかのプロパティが存在します。
それさえ選択しておけば、Javaのようにインスタンス化したり…のような操作をせずに、
Testクラス内でクラス名.メソッドを呼ぶだけでテストを実行することができます。
こちらが実際に使ったメソッドです。

//MARK: Meal Class Tests
// Confirm that the Meal initializer returns a Meal object when passed valid parameters.
func testMealInitializationSucceeds() {
    // Zero rating
    let zeroRatingMeal = Meal.init(name: "Zero", photo: nil, rating: 0)
    XCTAssertNotNil(zeroRatingMeal)
         
    // Highest positive rating
    let positiveRatingMeal = Meal.init(name: "Positive", photo: nil, rating: 5)
    XCTAssertNotNil(positiveRatingMeal)
}

このように、簡単にテストケースを作成することができます。
お気軽にUnit Testができるのはとてもありがたいです。


  • 戻るや確定のようなsubmit系ボタン
f:id:rs_chanko:20200113153710p:plain:w500

こちらのようなCancelSaveのようなボタンはiOSのアプリでよく見かけますね。
こちらもSwiftのコードを書かなくても実装することができます。
Bar Button Itemを使用して、属性タブのSystem Itemを変更することで挙動を選ぶことができます。
他の言語では○○に遷移するのような書き方をしていたので革新的な気持ちになりました!


Swiftの所感

  • 今時の言語

Swiftの特徴は型推論がされるところです。
JavaでもJava10から型推論が導入されていますが、
Java8を使用している筆者からすると扱いやすくもあり扱いにくくもありと感じました。
コードはすっきりするものの、突如渡されたコードの変数の型を理解するためにコードを読まないといけないのか…とも感じました。


今回サンプルアプリの作成では使用しなかったのですが、
XcodeでSwiftのコードを書く際にPlaygraundという機能を使うことができます。

f:id:rs_chanko:20200113161351p:plain

このようにリアルタイムでコンパイルをして実行結果を表示してくれる機能があります。
実際に求めている結果が表示されているのかが確認できてとても便利です。


おわりに

ただの感想文になってしまいましたが、Xcode、Swiftの所感でした。
今後は業務の開発でも触れていく(予定)なので、
プライベートで自分で何かしら開発をしてそれについて書けたらなと思います。

それではまたの機会に。

Goでconnpass APIを叩いて出力するまでやってみた

f:id:mako_makok:20191224160255p:plain

こんにちは、新卒のmako_makokです。 今回はGo未経験者が外部のAPIを叩いてみた話になります。

  • はじめに
  • この記事でやること
  • 型を作る
  • リクエス
  • connpass APIを叩いてみる
  • 実行結果
  • 最後に

はじめに

自分でカスタマイズしたクエリを使用して勉強会情報を取得したいと考えました。
普段はこういったツールは個人的にPythonで書くことが多いのですが、ある程度使い慣れた言語でリクエストを投げてパースするだけだとすぐに実装が終わってしまうので、
勉強がてら興味があったGoで実装してみました。
本日はGoで
1. connpass APIを叩き
2. レスポンスを構造体に詰め
3. 出力
するまでの手順や使用したツールについてお話ししようと思います。

この記事でやること

  • やること
    • レスポンスのjsonに対応した型の作成
    • httpクライアントの生成からGETリクエストを送る
    • Jsonを定義した型に変換する
続きを読む

PHP Conference Japan 2019 でレガシーシステムとの戦い方について話しました。

はじめまして。@penguin_no_045です。 東京で12/1に開催された PHP Conference Japan 2019でLT登壇してきました。 また、株式会社ラクスは PHP Conference Japan 2019 のブロンズスポンサーとして協賛しています。

イベント概要

登壇

社内最長老のシステムにPHPUnitで立ち向かう方法

speakerdeck.com

発表の要旨は、レガシーシステムPHPバージョンアップをPHPUnitでなんとかしたというものです。いわゆるレガシーネタですが、 少ないリソースでどうやって大きなコードをテストしていくのかということについてお話しました。内容は発表資料を参照いただくことにして実際に行ったことを振り返ると、それにしてもかなり極端な手法を採用したように思います。
なぜこんな手法をとれたのかというと、今回のPHPバージョンアップによって文法的に正しい状態が維持されているかどうかだけに責務を絞ったからです。それだけが目的だったので、モックでもなんでも使用してとにかくカバレッジを上げるという戦術を取ることができました。しかし品質担保の責務がもしあるならば、初めからこの手法は破綻しているでしょう。

お礼

発表準備に際してさまざまな方に資料のレビューや発表練習にお付き合いいただきました。
この場を借りてお礼を言いたいと思います。ありがとうございました!

印象に残ったセッション

改善失敗から学ぶ、レガシープロダクトに立ち向かうチーム作り。

speakerdeck.com

まさに自分たちが通るであろう道を見せられた気がしました。改善を続けていく中で起こったことが紹介されています。実際、カイゼンにチャレンジしたはいいけど、失敗したのでやめてしまった、なんていう話はたくさんあることでしょう。しかし失敗から学ぶことは多いはずですし、成功に結び付けることができればムダにはなりません。
カイゼンを続けているチームがいかに失敗し、その学びからカイゼンを回してきたのかを知ることができるセッションでした。

知見のない技術スタックをプロダクション導入するエンジニアの導入戦略

speakerdeck.com

いつの日か既存サービスと同じ技術スタックが最適ではない機能やサービスを開発するときがくるかもしれません。このセッションでは、まさにそのような場面において組織の不安と向き合い、最適な技術を選定し、開発するために取った戦略を紹介されています。導入実績がない技術スタックには組織としても「不安」がつきまといます。その不安に対して向き合っていくための武器として、テスト・監視・コード検査を挙げ、それらをいかにして活用して、開発をすすめていくか。その実践内容がそれぞれの手法ごとに解説されています。

このセッションでは「知見のない技術スタック」と銘打っていますが、実際に機能選定で知見のない技術スタックを選定候補に上げるためには、別の「寝技」のようなものがあるように思います。また、このセッションで紹介されたプラクティス事態は特別なものというわけではなく、日ごろから実践することでプロダクトの品質に大きく貢献できるのではないかと感じました。

感想

今回、登壇に際してたくさんの「はじめて」がありました。

  • 1000人以上参加するイベントに参加
  • PHP関連のイベント参加
  • 登壇すること

このようにはじめてづくしであったわりには発表自体はリラックスして行えたのではないかと自画自賛しておきます。
カンファレンスでは、PHPに限らず広い領域のセッションがあったため、広範囲に刺激を受けることができました。

おしらせ

PHPerKaigi 2020に登壇します!

セッションタイトルはPHPerがこれから「型」とお付き合いしていくためにです。
PHPで導入が進む型についてお話します。 プロポーザルはこちらをご覧ください。

実装の際に気を付けるべき汎用メソッドの落とし穴

こんにちは。新卒1年目エンジニアのrs_shoです。
投稿は3回目になります。
今回は実装の際に気を付けるべき汎用メソッドの落とし穴についてお話ししたいと思います。

  • はじめに
  • そもそも何に困ったのか
  • 解決するためにどういう案があるのか
  • おわりに
  • 参考資料

はじめに

皆さん、javaでコーディングする時によく使うUtilsの便利なメソッド、コーディングが楽ですよね。
実装する際によくStringUtilsやNumberUtilsなど、色々な汎用メソッドを多用して
楽にコーディングできるので、ついつい使ってしまいがち。。。

そういう僕も良く汎用メソッドを使って実装することが多々ありますが、今回はそのメソッドを使った際に
困ってしまったお話をしようと思います。

続きを読む

新人エンジニアの読めそうで読めなかったシェルの話

はじめに

はじめまして。新卒1年目のtuq376sです。
気付けば入社してから季節は4つ目。毎日新しい壁にぶつかりながら、それでも随分とわかることが増えたなぁと思うくらいには成長できている気がします。
今回はそんな壁の中から、初めてシェルスクリプトを業務で触った時のことをまとめてみようかと思います。

  • はじめに
  • 読めそうで読めなかったシェル
  • 学んだこと
    • 特殊パラメータ
    • if文の条件式
      • testコマンド
    • リダイレクト
  • さいごに
続きを読む

ドメイン駆動設計を支えるアーキテクチャテスト

@kawanamiyuu です。この記事は「ドメイン駆動設計#1 Advent Calendar 2019」の 6 日目の記事です。

1. はじめに

最近、技術イベントやまた社内でも「ドメイン駆動設計」や「クリーンアーキテクチャ」についての話題をこれまでにも増してよく耳にするようになりました。

私も楽楽労務という実際のプロダクト開発で 1 年以上、ドメイン駆動設計に取り組んできました。ドメイン駆動設計 チョットデキル ような気がしてきたころ、このように思いました。

ドメイン駆動設計って、『オブジェクト指向設計をちゃんとやる』ってことだよね?」

ドメイン駆動設計もクリーンアーキテクチャも、オブジェクト指向設計原則のうえに成り立つ設計プラクティスであり、ただ、重要な視点として、オブジェクト指向設計原則の適用を検討する対象がクラスだけではありません。もう少し大きな単位、パッケージ・モジュール・レイヤー、まで視野を広げます。

  • 依存関係が注意深く設計され、単一の責任を持ったモジュールやパッケージが、ドメインをかたちづくります
  • レイヤーやパッケージの依存関係の逆転により、ドメインは自身の関心や責務を逸脱することなくビジネスロジックの実現に集中できます

ドメイン駆動設計がオブジェクト指向プログラミングによって実現されるということは、そのアーキテクチャも、私たちが慣れたいつもの方法 ─ ユニットテスト ─ で、テストすることができます。ソースコードアーキテクチャも、一度つくって終わりではありません。プロダクト開発が続くかぎり、常に見直され改善されるべき対象です。

......

前置きが長くなりましたが、この記事では依存関係という切り口から、アーキテクチャの品質を継続的に維持・改善していくための手法として、ArchUnit (Java) によるアーキテクチャテストを紹介します。

github.com

ArchUnit って何?については昨年のアドベントカレンダーに投稿しています。

qiita.com

続きを読む

JSConf JPで登壇してきました

こんにちは、@whiteFox_73です。東京で11/30~12/1に開催されたJSConf JPに登壇してきました。
また、株式会社ラクスはJSConf JPの BRONZE スポンサーとしてイベントに協賛いたしました。

イベント概要

  • 日時:2019年11月30日(土)~ 2019年12月1日(日)
  • 会場:アーツ千代田 3331
  • 公式 HP:https://jsconf.jp/2019/

jsconf.jp

登壇

正攻法はあるのか!?泥臭く戦ったNode.jsバージョンアップ一部始終(30分セッション)

speakerdeck.com

続きを読む
Copyright © RAKUS Co., Ltd. All rights reserved.