Faits :
A.
En 1963, A.B._, né en 1928, a pris à bail un studio au deuxième étage d'un immeuble comptant 39 appartements, sis à Genève. En 1965, il a quitté le studio pour un logement de trois pièces situé au premier étage du même immeuble. Son épouse, B.B._, née en 1934, a été engagée comme concierge de l'immeuble à partir du 1er février 1968 pour un salaire mensuel de 200 fr. A fin 1969, en raison de la naissance d'un deuxième enfant, A.B._ a manifesté son intérêt pour un appartement de quatre pièces et demie situé au septième étage de l'immeuble.
Le 25 janvier 1971, un nouveau "contrat de travail pour le service de concierge" a été conclu. B.B._ figure dans l'entête comme partie, en qualité de concierge; le contrat a été signé par A.B._. La rémunération suivante était prévue: "Valeur des prestations en nature (loge) : App. 41 /2 pces, no 74, 7ème ét., Loyer annuel Fr. 5'700.-; Charges ann. Fr. 720.-; total Fr. 6420.-, soit par mois Fr. 535; moins valeur en espèces du salaire Fr. 335.-; différence restant à payer par le concierge par mois échu Fr. 200.- + AVS 10.40". Sous le titre "Loge", le contrat contient la clause suivante: "Le concierge s'engage expressément à la restituer en parfait état d'entretien à l'expiration du contrat, et à la rendre immédiatement disponible dès cette date; en cas de rupture du contrat pour justes motifs, la loge doit être immédiatement libérée et mise à disposition de l'employeur". Aucun contrat de bail n'a été signé en parallèle. En dernier lieu, le salaire s'élevait à 970 fr.80 par mois et le loyer mensuel se montait à 1'100 fr., charges comprises.
A une date indéterminée, A._ est devenu propriétaire de l'immeuble. Par courrier du 29 novembre 2011, il a résilié le contrat de travail de B.B._ pour le 31 janvier 2012 et l'a priée de restituer la "loge de concierge" dans ce délai. Par jugement du Tribunal des baux et loyers du 29 juin 2012, la résiliation du bail a été déclarée nulle au motif qu'elle avait été notifiée uniquement à l'épouse et, de surcroît, sans avis officiel.
Depuis la fin de l'engagement de B.B._ comme concierge, le bailleur fait appel à une entreprise de conciergerie externe. L'un des employés de cette entreprise occupe un appartement de l'immeuble.
Par avis officiel du 17 avril 2012 notifié séparément à chacun des époux B._, A._ a résilié le bail pour le 31 octobre 2012; les locaux loués étaient alors désignés comme la "loge de concierges sise au 7ème étage". Sur requête, le bailleur a indiqué le motif de résiliation suivant: "Le contrat de travail a été résilié. Le couple B._ occupe l'appartement de fonction du concierge et dans ce cadre, il leur appartient de quitter le logement".
Le congé a été contesté à temps. Faute de conciliation, les locataires ont porté la cause devant le Tribunal des baux et loyers du canton de Genève, concluant principalement à l'annulation du congé, subsidiairement à une prolongation de bail de quatre ans. Par jugement du 6 mars 2014, le tribunal a annulé le congé. Pour l'essentiel, il a retenu que l'appartement occupé par les locataires n'était pas spécifiquement doté d'équipements destinés ou propres à la conciergerie et que tout autre logement de l'immeuble pourrait accueillir un éventuel concierge. Il a dès lors considéré que le motif de congé ne paraissait pas digne de protection et que la résiliation du bail ne reposait pas sur un motif sérieux.
Statuant le 8 décembre 2014 sur appel de A._, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé le jugement de première instance. Elle a conclu que le motif invoqué par le bailleur, à savoir le besoin de récupérer l'appartement afin de l'attribuer à un couple de concierges, apparaissait être un prétexte.
B.
A._ interjette un recours en matière civile. Il conclut à ce que le congé soit déclaré valable et à ce que les locataires soient déboutés de toutes autres ou contraires conclusions.
A.B._ et B.B._ proposent principalement l'irrecevabilité du recours dont la motivation se limiterait à des considérations d'ordre général; à titre subsidiaire, ils concluent au rejet du recours.
Les parties ont de part et d'autre déposé des observations supplémentaires.

Considérant en droit :
1.
1.1. Le recours est dirigé contre un arrêt final (art. 90 LTF) rendu en matière civile (art. 72 al. 1 LTF) par un tribunal supérieur d'un canton, qui a statué sur recours (art. 75 LTF). La cause atteint la valeur litigieuse de 15'000 fr. ouvrant le recours en matière civile dans les affaires relevant du droit du bail à loyer (art. 74 al. 1 let. a LTF; cf. <ref-ruling> consid. 1.1 p. 390; <ref-ruling> consid. 196 consid. 1.1 p. 197). Au surplus, le recours est exercé par la partie qui a succombé dans sa conclusion tendant à faire constater la validité du congé et qui a donc qualité pour recourir (art. 76 al. 1 LTF). Déposé dans le délai (art. 46 al. 1 let. c et art. 100 al. 1 LTF) et la forme (art. 42 LTF) prévus par la loi, le recours est en principe recevable.
1.2. Le recours peut être interjeté pour violation du droit, tel qu'il est délimité par les art. 95 et 96 LTF. Le Tribunal fédéral applique le droit d'office (art. 106 al. 1 LTF). Cependant, compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, à respecter sous peine d'irrecevabilité (art. 108 al. 1 let. b LTF), il n'examine que les questions juridiques qui sont soulevées devant lui; il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui se posent, lorsque celles-ci ne sont plus discutées devant lui. Pour satisfaire à son obligation de motiver, le recourant doit discuter les motifs de la décision entreprise et indiquer précisément en quoi il considère que l'autorité précédente a méconnu le droit (<ref-ruling> consid. 2 p. 88 s. et les arrêts cités).
Sous les titres "appréciation libre de la portée juridique des faits" et "correction des vices - pesée des intérêts", le recourant expose en termes très généraux son appréciation des faits, sans se référer aux motifs de l'arrêt attaqué et sans tenter de démontrer en quoi ceux-ci seraient erronés. Il ne peut pas être entré en matière sur de tels griefs.
2.
Le recourant se plaint d'une violation de l'art. 271 CO. Il conteste que le congé donné aux intimés constitue un abus de droit. Il fait valoir que son intention de disposer d'un concierge à demeure dans un immeuble de huit étages comptant 39 appartements est digne de protection et qu'il ne s'agit ni d'un prétexte ni d'une chicanerie.
2.1. Les parties au contrat sont libres de résilier un bail de durée indéterminée pour le prochain terme légal ou contractuel; un motif particulier n'est pas exigé (art. 266a al. 1 CO). Le congé est toutefois annulable lorsqu'il contrevient aux règles de la bonne foi (art. 271 al. 1 CO; cf. également art. 271a CO). Tel est le cas lorsqu'il ne répond à aucun intérêt objectif, sérieux et digne de protection et qu'il apparaît ainsi purement chicanier. Le seul fait que la résiliation entraîne des conséquences pénibles pour le locataire n'est pas suffisant; il faut une disproportion crasse entre l'intérêt du preneur au maintien du contrat et l'intérêt du bailleur à y mettre fin. En règle générale, l'absence d'intérêt digne de protection du bailleur est également admise lorsque la motivation du congé, demandée par le locataire, est un prétexte et que la vraie raison ne peut pas être constatée. Pour juger de la validité de la résiliation, il faut se placer au moment où celle-ci a été notifiée (<ref-ruling> consid. 2.1 p. 62 et les arrêts cités).
2.2. Au moment de la résiliation, les locataires, âgés respectivement de 84 ans et de 78 ans, occupaient l'appartement en cause depuis 41 ans; il n'a pas été constaté qu'ils n'auraient jamais causé de difficultés. Certes, la remise de l'appartement était à l'origine liée à la fonction de concierge; néanmoins, le logement en jeu n'est pas spécifiquement équipé pour les tâches de conciergerie et n'offre pas, pour l'exercice de celles-ci, des avantages que d'autres appartements de l'immeuble ne présenteraient pas. La libération de l'appartement litigieux n'est donc pas une condition nécessaire pour que le recourant puisse engager à demeure un couple chargé de la conciergerie, comme il le souhaite à bon droit. C'est d'autant moins le cas que, selon une constatation de l'arrêt attaqué incontestée et liant ainsi la cour de céans (art. 105 al. 1 LTF), au moins un appartement de trois pièces s'est libéré depuis fin 2011. Le recourant n'invoque aucun autre motif de résiliation. Il est envisageable que le congé ait été donné en réalité pour des motifs économiques, mais le bailleur n'a pas apporté le moindre indice permettant de conclure qu'il pourrait augmenter le loyer sans tomber dans l'abus (cf. <ref-ruling> consid. 3b/bb p. 110; <ref-ruling> consid. 2.1 p. 76 s.). Dans ces circonstances, et en se référant pour le surplus aux considérants de l'arrêt attaqué (cf. art. 109 al. 3 LTF), il faut admettre avec la cour cantonale que la résiliation contrevient aux règles de la bonne foi.
3.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
Le recourant prendra à sa charge les frais de la présente procédure (art. 66 al. 1 LTF) et versera des dépens aux intimés (art. 68 al. 1 et 2 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
3.
Le recourant versera aux intimés une indemnité de 2'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 19 mai 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann